您可以在 VBA 中使用Like运算符和以下内置通配符来搜索字符串中的特定模式:
* : 匹配任意数量的字符
? : 匹配单个字符
# : 对应单个数字
[] :匹配范围内的任意字符
以下示例展示了如何在实践中使用这些通配符。
示例 1:使用 *通配符搜索子字符串
假设 A 列中有以下食物列表:
我们可以创建以下宏来搜索 A 列中每个字符串中的“热门”子字符串,并将结果显示在 B 列中:
Sub FindString()
Dim i As Integer
For i = 2 To 10
If Range(" A " & i) Like " *hot* " Then
Range(" B " & i) = " Contains hot "
Else
Range(" B " & i) = " Does Not Contain hot "
End If
Next i
End Sub
当我们运行这个宏时,我们会收到以下输出:
示例 2:使用通配符 * 搜索以模式结尾的字符串
假设 A 列中有以下篮球队名称列表:
我们可以创建以下宏来搜索 A 列中以“ets”结尾的字符串,并将结果显示在 B 列中:
Sub FindEndingString()
Dim i As Integer
For i = 2 To 10
If Range(" A " & i) Like " *ets " Then
Range(" B " & i) = " Ends in ets "
Else
Range(" B " & i) = " Does Not End in ets "
End If
Next i
End Sub
当我们运行这个宏时,我们会收到以下输出:
示例 3:使用通配符 # 搜索号码
假设 A 列中有以下字符串列表:
我们可以创建以下宏来搜索 A 列中包含数字的字符串,并将结果显示在 B 列中:
SubFindNumbers ()
Dim i As Integer
For i = 2 To 10
If Range(" A " & i) Like " *#* " Then
Range(" B " & i) = " Contains Numbers "
Else
Range(" B " & i) = " Does Not Contain Numbers "
End If
Next i
End Sub
当我们运行这个宏时,我们会收到以下输出:
示例4:使用通配符[]搜索多个字符
假设 A 列中有以下篮球队名称列表:
我们可以创建以下宏来在 A 列中搜索团队名称中包含 r、s 或 t 的字符串,并将结果显示在 B 列中:
Sub FindSpecificLetters()
Dim i As Integer
For i = 2 To 10
If Range(" A " & i) Like " *[rt]* " Then
Range(" B " & i) = " Contains r, s, or t "
Else
Range(" B " & i) = " Does Not Contain r, s or t "
End If
Next i
End Sub
当我们运行这个宏时,我们会收到以下输出:
注意:您可以在此处找到完整的 VBA 通配符文档。
其他资源
以下教程说明如何使用 VBA 执行其他常见任务:
VBA:如何计算字符串中字符的出现次数VBA:如何检查一个字符串是否包含另一个字符串VBA:如何计算具有特定文本的单元格