我试图使用IF语句来检查20个不同变量的单元格

时间:2017-09-08 17:17:04

标签: excel vba excel-vba

我正在尝试检查单元格中的单词或一系列单词。我正在寻找大约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个其他的话。这个是在任何单元格中搜索错误单词是否错误。

3 个答案:

答案 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