在vba中搜索多个字符串

问题描述 投票:2回答:1

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

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

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

excel-vba vba excel
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.