在vba中搜索多个字符串

时间:2018-05-28 13:30:11

标签: excel-vba vba excel

所以基本上我需要创建一个需要比较包含许多不同字符串的大量单元格的宏。我已经拥有的是这样的:

Sub strcom()
Dim r as range ‘dt_range is a named range in name manager
For r in range(“dt_range”)
If instr(“ab”, r.value,1) then ...
If instr(“cd”, r.value, 1) then ...
...
Next r
...
End sub

如果我要这样做,那将会非常低效,因为我有很多字符串要比较,有没有更好的方法而不是这样做?我想使用精选案例,但不确定它是如何工作的。

1 个答案:

答案 0 :(得分:2)

Select CaseIf-Else提供了非常小的优势。但是,这是一种方法:

Sub StrCom()

    Dim r As Range
    Dim dtRange As Range

    Set dtRange = Range("A1:Z10")

    For Each r In dtRange

        Select Case True

        Case InStr(1, "ab", r)

        Case InStr(1, "cd", r)

        Case Else

        End Select

    Next r
End Sub

另一种选择是使用2个嵌套循环,从单元格循环和要检查的值。像这样:

Sub StrCom()

    Dim r As Range
    Dim dtRange As Range

    Set dtRange = Range("A1:Z10")
    Dim someArray As Variant

    someArray = Array("ab", "cd", "ef")
    Dim arrVal As Variant

    For Each r In dtRange
        For Each arrVal In someArray
            If InStr(1, arrVal, r) Then
                'do something
            End If
        Next arrVal
    Next r

End Sub