我正在尝试使用IF语句来检查20个不同variables的单元格

我试图检查一个单词或一系列单词的单元格。 有大约20个不同的版本我正在寻找,如果它是其中之一,那么我想什么都不做。 如果不是其中之一,那么我希望它是空白的。 我已经制定了一个具体的项目正确的工作,但我怎样才能find20个不同的项目,而不是做20个IF语句? 我能够为IF语句创build一个数组或东西吗? 我真的不知道该怎么做,但我可以查看它。

以下是我对我的一个具体陈述的看法:

ActiveSheet.AutoFilterMode = False lngRows = Range("A" & Rows.Count).End(xlUp).Row For lngRow = lngRows To 2 Step -1 If (LCase(ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "A").Value) = "transfer" And _ Not InStr(1, LCase(Range("B" & lngRow)), LCase("err")) <> 0) Then ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "B").Value = "" End If 

我需要这样做,但另外20个字。 这是一个search,如果它在任何单元格错误错误。

创build一个search项的数组,并通过该数组循环。 我已经使用了一个变体数组来简化操作:

 Sub Test() Dim arr As Variant, v As Variant arr = Array("err", "err2", "err3") 'all 20 in here or get from worksheet as per below 'arr = Application.Transpose(ThisWorkbook.Worksheets("Sheet1").Range("A1:A20")) For Each v In arr 'IF statement in this loop, using the variable v rather than the string "err" 'MsgBox v Next v End Sub 

elseif允许你添加一个if语句的附加条件。 循环遍历一个数组会更清晰,但是这是用elseif来获取信息的方法。

这是一些通用的代码。 如果最后不包含else ,那么如果没有条件满足,它将不会执行任何操作。

 Sub test_elseif() If x = 1 Then y = 1 ElseIf x = 2 Then y = 2 ElseIf x = 3 Then y = 3 End If End Sub 

在表单中创build名为“myWords”的范围与testing单词。 然后在vba代码中引用它在另一个循环中:

 ActiveSheet.AutoFilterMode = False lngRows = Range("A" & Rows.Count).End(xlUp).Row Dim rng As Range, cell As Range Set rng = Range("myWords") For lngRow = lngRows To 2 Step -1 For Each cell In rng If (LCase(ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "A").Value) _ = cell And _ Not InStr(1, LCase(Range("B" & lngRow)), LCase("err")) <> 0) Then ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "B").Value = "" End If Next cell