我想在两个场景中使用if-function来进行distingiush。
For Each Cell In Tabelle3.Range("A" & lastrow2)
Option A: If Cell <> "" Then run code
Option B: If Cell = "" Then skip this empty cell and go on with the next one
这里是整个代码:
Sub IfFunction()
Dim lastrow2 As Long
lastrow2 = Tabelle3.Range("A" & Rows.Count).End(xlUp).Row
Set myrange2 = Tabelle8.UsedRange
For i = 2 To lastrow2
For Each Cell In Tabelle3.Range("A" & lastrow2)
If Cell = "" Then i = i + 1
Else: i = i
Tabelle3.Cells(7 + i, 19) = Application.WorksheetFunction.VLookup(Tabelle3.Cells(7 + i, 1), myrange2, 3, False)
Tabelle3.Cells(7 + i, 20) = Application.WorksheetFunction.VLookup(Tabelle3.Cells(7 + i, 1), myrange2, 4, False)
Tabelle3.Cells(7 + i, 21) = Application.WorksheetFunction.VLookup(Tabelle3.Cells(7 + i, 1), myrange2, 5, False)
Next i
End If
End Sub
当我尝试运行此代码时,它不会执行,因为出现错误,即存在'没有IF'功能的ELSE。
有谁知道如何在这里使用IF功能或使用什么功能?谢谢。 :)
答案 0 :(得分:5)
如果您在Then
后继续撰写,则表示If
语句仅包含一行:
If Cell = "" Then i = i + 1 'End If automatically here
然后Else
也必须在那条线上:
If Cell = "" Then i = i + 1 Else i = i 'End If automatically here
如果您想使用多行If
声明
If Cell = "" Then
i = i + 1
Else
i = i
End If
因为i = i
没有做任何你可以写的事情
If Cell = "" Then i = i + 1
并完全省略Else
部分,因为它什么都不做。
因为您自动使用For i
Next i
增量i
并且您不需要自己增加它。没有i = i + 1
需要
答案 1 :(得分:0)
您的代码必须For
但只有一个Next
,这会导致语法错误
此外,Next i
与If-Then-Else
块代码交织在一起,这也会导致语法错误
最后,我猜你要沿着Tabelle3
列重复两次A行第2行到最后一行不是空的,而你只需要一次
总结一下,我说你可以使用这段代码:
Option Explicit
Sub IfFunction()
Dim myrange2 As Range, cell As Range
Set myrange2 = Tabelle8.UsedRange
With Tabelle3
For Each cell In .Range("A2:A" & .Cells(.Rows.count, 1).End(xlUp)).SpecialCells(xlCellTypeConstants)
cell.Offset(7, 18) = Application.WorksheetFunction.VLookup(cell.Offset(7), myrange2, 3, False)
cell.Offset(7, 19) = Application.WorksheetFunction.VLookup(cell.Offset(7), myrange2, 4, False)
cell.Offset(7, 20) = Application.WorksheetFunction.VLookup(cell.Offset(7), myrange2, 5, False)
Next
End With
End Sub
答案 2 :(得分:0)
好的,这实际上很简单:D我通过
两次运行同一列For Each Cell In Tabelle3.Range("A" & lastrow2)
If Cell = "" Then i = i + 1
Else: i = i
和
For i = 2 To lastrow2
相反,我可以简单地使用:
For i = 2 To lastrow2
If Tabelle3.Cells(7 + i, 1) <> "" Then
Tabelle3.Cells(7 + i, 19) = Application.WorksheetFunction.VLookup(Tabelle3.Cells(7 + i, 1), myrange2, 3, False)
Tabelle3.Cells(7 + i, 20) = Application.WorksheetFunction.VLookup(Tabelle3.Cells(7 + i, 1), myrange2, 4, False)
Tabelle3.Cells(7 + i, 21) = Application.WorksheetFunction.VLookup(Tabelle3.Cells(7 + i, 1), myrange2, 5, False)
End if
Next i
非常感谢您的帮助和帮助贡献!