Excel VBA循环直到单元格不为空
我相信这将是相当直截了当的,但我正在与这个逻辑作斗争。我试图根据填充的数据创建一个行计数,然后循环遍历中的所有空单元格,直到填充了notes列的字段。其思想是将该值/注释写入SQL表 到目前为止,我掌握的代码是:Excel VBA循环直到单元格不为空,excel,vba,Excel,Vba,我相信这将是相当直截了当的,但我正在与这个逻辑作斗争。我试图根据填充的数据创建一个行计数,然后循环遍历中的所有空单元格,直到填充了notes列的字段。其思想是将该值/注释写入SQL表 到目前为止,我掌握的代码是: NoteCount = WorksheetFunction.CountA(Sheets("Missing").Range("B10:B7500")) Sheets("Missing").Range("L10").Select For i = 10 To NoteCount
NoteCount = WorksheetFunction.CountA(Sheets("Missing").Range("B10:B7500"))
Sheets("Missing").Range("L10").Select
For i = 10 To NoteCount
If ActiveCell.Value = "" Then
Next i
Else:
'SQL Code entered here'
End If
Next I
我知道这段代码不起作用,因为我的For循环没有对齐,但我只是想展示我要实现的目标。这可以通过使用下面的代码来实现,只需稍微短一点和简单一点:
Dim i As Long
With Sheets("Missing")
For i = 10 To .Cells(.Rows.Count, "B").End(xlUp).Row ' loop until last row with data in column "B" (skip blank rows)
If Trim(.Range("L" & i).Value) <> "" Then ' check if value in cell in column "L" in current row is not empty
'SQL Code entered here'
End If
Next i
End With
Dim i尽可能长
附页(“缺失”)
对于i=10到.Cells(.Rows.Count,“B”).End(xlUp.Row)循环,直到最后一行的数据在列“B”中(跳过空行)
如果修剪(.Range(“L”&i).Value)”,则检查当前行“L”列中单元格中的值是否为空
'此处输入的SQL代码'
如果结束
接下来我
以
使用以下代码,只需稍微缩短和简化即可实现:
Dim i As Long
With Sheets("Missing")
For i = 10 To .Cells(.Rows.Count, "B").End(xlUp).Row ' loop until last row with data in column "B" (skip blank rows)
If Trim(.Range("L" & i).Value) <> "" Then ' check if value in cell in column "L" in current row is not empty
'SQL Code entered here'
End If
Next i
End With
Dim i尽可能长
附页(“缺失”)
对于i=10到.Cells(.Rows.Count,“B”).End(xlUp.Row)循环,直到最后一行的数据在列“B”中(跳过空行)
如果修剪(.Range(“L”&i).Value)”,则检查当前行“L”列中单元格中的值是否为空
'此处输入的SQL代码'
如果结束
接下来我
以
如果有大量数据,您可能会发现某些方法的速度非常慢。这将比在列中的每个单元格中循环更快:
Sub test()
Dim rng As Range, found As Range
Dim firstAddress As String
With ThisWorkbook.Worksheets("Missing")
Set rng = .Range(.Range("B10"), .Cells(.Rows.Count, "B").End(xlUp))
Set rng = rng.Offset(0, 10)
End With
Set found = rng.Find("", , , xlWhole)
If Not found Is Nothing Then
firstAddress = found.Address
Do
'SQL code entered here
Set found = rng.FindNext(found)
Loop While Not found.Address = firstAddress
End If
End Sub
如果有大量数据,您可能会发现某些方法非常慢。这将比在列中的每个单元格中循环更快:
Sub test()
Dim rng As Range, found As Range
Dim firstAddress As String
With ThisWorkbook.Worksheets("Missing")
Set rng = .Range(.Range("B10"), .Cells(.Rows.Count, "B").End(xlUp))
Set rng = rng.Offset(0, 10)
End With
Set found = rng.Find("", , , xlWhole)
If Not found Is Nothing Then
firstAddress = found.Address
Do
'SQL code entered here
Set found = rng.FindNext(found)
Loop While Not found.Address = firstAddress
End If
End Sub
你有2个
下一个i
必须只有一个。使用倒置的if
语句:if Not ActiveCell.Value=”“然后“此处输入SQL代码”
您得到了2个下一个i
必须只有一个。使用倒置的if
语句:if Not ActiveCell.Value=”“然后“在此输入SQL代码”
@Carlos80您的“欢迎,现在您可以通过单击我的答案左侧的灰色复选标记(它将变为绿色)来标记为“答案”完成-再次感谢您@Carlos80欢迎您,现在您可以通过单击我的答案左侧的灰色复选标记(将变为绿色)来标记为“答案”完成-再次感谢您!