Excel VBA Like 通配符

Like 是 VBA 里用来模式匹配(pattern matching)的运算符,用来判断某个字符串是不是符合一套“通配符规则”。

If "Hello" Like "H*" Then
    MsgBox "匹配成功!"
End If

Like 返回 True / False

常用通配符总表(一定要收藏)

通配符 作用 示例
? 匹配任意单个字符 “A?” 可匹配 “AB”、”A1”
* 匹配任意长度字符(含空) “A*” 匹配 “A”、”Apple”
# 匹配任意数字(0–9) “##” 匹配 “03”、”58″
[abc] 匹配集合里任意一个字符 “h[ae]llo” 匹配 hello / hallo
[a-z] 匹配范围字符 “[A-Z]??” 匹配 “Cat” 这样的 3 字符串(首字母大写)
! 取反(不匹配后面字符) “[!0-9]*” 不能以数字开头
[] 空内容 字面量 [] 要匹配 [ 这个符号需要用 “[

经典例子(直接上手用)

检查是否邮箱格式(超级常用)

If mail Like "*@*.*" Then
    MsgBox "大概是个邮箱"
End If

当然,Like 不是专业正则,不适合做特别严谨的验证。


判断是否数字(纯数字字符串)

If text Like "#*" Then
    MsgBox "是数字串"
End If

但注意这种方式只判断第一位是否数字,如需全数字:

If text Like String(Len(text), "#") Then
    MsgBox "全是数字"
End If

判断是否以特定字符开头

If name Like "A*" Then
    MsgBox "名字以 A 开头"
End If

判断长度为 3 的大写字母串

If code Like "[A-Z][A-Z][A-Z]" Then
    MsgBox "是三位大写字母"
End If

Like vs 通配符

别搞混:

Excel 函数里的通配符:*?

VBA Like 的通配符:* ? # [abc] [a-z] [!...]

它们不是完全一套语法!

例如:

目的 Excel公式 VBA Like
开头是 A "A*" "A*"
第 2 字符必须是数字 不支持 "A#*"
3 位全大写字母 不支持 "[A-Z][A-Z][A-Z]"

小技巧:Like 配合 Select Case

比 if 写起来优雅很多!

Select Case text
    Case "A*"
        MsgBox "A 开头"
    Case "*B"
        MsgBox "B 结尾"
    Case "[0-9]*"
        MsgBox "以数字开头"
    Case Else
        MsgBox "不匹配任何规则"
End Select