在Excel中,我有一列数据。我想将这一列数据用于循环。 下面的代码在遇到1个空行时停止。但是我需要循环再继续两步。
i = 1
Do Until IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2)
'do something...
i = i + 1
Loop
换句话说,是否有类似的东西:
Do Until IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2) + 2
我希望我的问题很明确!
答案 0 :(得分:1)
您需要一个新变量来跟踪此信息。您可以在现有的DO UNTIL
循环中执行此操作:
i = 1
extraTwo = 1
Do Until IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2) or extraTwo > 2
'do something...
i = i + 1
if IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2) then extraTwo = extraTwo + 1
Loop
或在外部循环中:
i = 1
Do Until IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2)
'do something...
i = i + 1
Loop
For extraTwo = 1 to 2
'do something...
i = i + 1
extraTwo = extraTwo + 1
Next
第一个意味着没有代码重复(即使你将do something...
移动到一个函数或子程序,你必须复制调用),但第二个更明显的是发生了什么(尽管那个'#s; s值得商榷)。
答案 1 :(得分:1)
你可以使用
的内容Dim numEmpties as Long
i = 1
Do While True
If IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2) Then
numEmpties = numEmpties + 1
If numEmpties = 3 Then Exit Do
End If
'do something
i = i + 1
Loop
这里我实际上是手动控制循环索引,并且以这种方式编写它是优雅的,因为IsEmpty
测试只写了一次。 (这在C中是惯用的。)