我正在尝试检查单元格中的单词或一系列单词。我正在寻找大约20个不同版本,如果是其中之一,那么我想什么也不做。如果它不是其中之一,那么我希望它是空白的。我已经解决了一个特定项目的正常工作,但是如何在不执行20个IF语句的情况下查找20个不同的项目?我是否能够为IF语句制作数组或其他内容?我真的不知道怎么做,但我可以查一查。
以下是我的具体陈述:
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个其他的话。这个是在任何单元格中搜索错误单词是否错误。
答案 0 :(得分:1)
创建一个搜索项数组并循环遍历该数组。为了方便起见,我使用了变量数组:
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
答案 1 :(得分:1)
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
答案 2 :(得分:1)
在工作表中创建名为&#34; myWords&#34;的范围。用测试词。 然后在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