2016-02-23 5 views
0
    **Column 1 Column2 Column 3 Column 4 ETC** 

**Row 1**   100  200  330  4000 
**Row 2**   4678  5744  5333  8000 

**Row 3**   

**Row 4**   100  120  1600  900 

**Row 5**   

**Row 6**   4477  237  220   3200 

**Row 7** 

ETC 

Это пример таблицы. Что я хочу сделать, это пропустить некоторые строки, так как вы можете видеть, что у Row 5 нет данных, поэтому я не хочу включать это, но мне нужно, чтобы он продолжался, чтобы я мог получить все данные для Row 6, Row 7 и т. Д. Я загружаю данные из VBA и преуспеваю в SQL. ли пробовали заявление, если Если sht.Cells (lRow, 1) = «» Тогда ExitSubVBA Как пропустить определенные строки при загрузке

попытался изменить все пробелы в Nulls - но некоторые клетки имеют формулы в них, поэтому не нулевые значения но и не загружать.

Я предполагаю, что это простое решение, и я просто пропустил что-то очевидное. Любая помощь будет замечательной.

+0

Как вы используете ENDSUB и exitsub? Кто они такие? –

+0

Например, я не мог поместить оператор IF в высказывание «Если sht.cells (lRow, 2) =» «Then ExitSub, потому что мне нужно, чтобы он продолжал загружать остальную информацию – user5836742

+0

Заполните формулу справа стороне, отсортируйте по формуле и затем удалите столбец формулы. – Jeeped

ответ

0

Если вы хотите, чтобы пропустить строку, но по-прежнему в остальной части данных, то ваш код должен быть

If sht.Cells(lRow, 1) = "" Then lRow = lRow + 1 
EndIf 

Предположив это является частью цикла? Если вы можете опубликовать весь код VBA, который будет полезен.

Хороший код для загрузки данных, которые я использую выглядит следующим образом:

Sub export_entirexref_to_sql() 

Dim conn As New ADODB.Connection 
Dim RowNo As Long 
Dim i, x As Long 
Dim C1, C2, C3, C4 As String 
Dim wbk As Workbook 
Dim strFile As Variant 
Dim shtname As String 
Dim strSQL As String 
strFile = Application.GetOpenFilename 
If strFile = False Then 
Exit Sub 
Else: End If 

Application.ScreenUpdating = False 

    ' *** Open workbooks first *** 
    Set wbk = Workbooks.Open(strFile) 
    shtname = ActiveWorkbook.Worksheets(1).Name 
    lastrow = wbk.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row + 1 
    With Sheets(shtname) 

    'Open a connection to SQL Server 
    conn.Open "Provider=SQLOLEDB;Data Source=xxxxxx\xxxx;Initial Catalog=xxxxx;User ID=xxx; Password=xxxxxx; " 

    ' Delete table data 
    conn.Execute "TRUNCATE TABLE EcommerceXRefMapping_C_copy;" 

    'Skip the header row 
    RowNo = 2 

    'Loop until empty cell in Col 1 
    Do Until .Cells(RowNo, 1) = "" 
     i = i + 1 
     C1 = .Cells(RowNo, 1) 
     C2 = .Cells(RowNo, 2) 
     C3 = .Cells(RowNo, 3) 
     C4 = .Cells(RowNo, 4) 

     'Generate and execute sql statement to import the excel rows to SQL Server table 

     strSQL = strSQL + "insert into EcommerceXRefMapping_C_copy ([EquivalentPartNumber_C], [Manufacturer_C], [CatamacPartNumber_C], [Notes_C]) values ('" & C1 & "', '" & C2 & "', '" & C3 & "', '" & C4 & "');" 

     conn.Execute strSQL 

     RowNo = RowNo + 1 

    Loop 

    conn.Close 
    Set conn = Nothing 

    End With 

    wbk.Close 
    Application.ScreenUpdating = True 

End Sub 

Вы бы просто добавить оператор IF здесь

 conn.Execute strSQL 


     RowNo = RowNo + 1 

     If sht.Cells(RowNo, 1) = "" Then RowNo = RowNo + 1 
     EndIf 

    Loop 
Смежные вопросы