Excel 在vba中搜索多个字符串
所以基本上我需要创建一个宏来比较包含许多不同字符串的许多单元格。我已经拥有的是这样的:Excel 在vba中搜索多个字符串,excel,vba,Excel,Vba,所以基本上我需要创建一个宏来比较包含许多不同字符串的许多单元格。我已经拥有的是这样的: 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 Sub StrCom()
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
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
如果我要这么做的话,效率会很低,因为我有很多字符串要比较,有没有更好的方法来代替这个?我想使用select case,但不确定它将如何工作。
select case
与If 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
另一个选项是使用两个嵌套循环,从单元格和要检查的值循环。大概是这样的:
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
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
那么,每个人的行动是否有所不同。。。。。。。。。??