You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA中Like通配符匹配疑问:为何前后加*无法匹配?

VBA Like 表达式两种写法的差异

你的理解确实有误,这两种写法的匹配逻辑完全不同,并非效果一致:

核心差异

  • 原表达式:If Range(HotelCol & Row).Value Like "*" & HTLArray(HtlRmNtRow) & "*" Then
    该表达式用于匹配包含目标酒店代码的字符串——无论代码在字符串的开头、中间还是结尾,只要存在就能匹配。
  • 修改后的表达式:If Range(HotelCol & Row).Value Like HTLArray(HtlRmNtRow) & "*" Then
    该表达式仅匹配以目标酒店代码开头的字符串——代码必须位于字符串最前端,后续可跟任意内容,但代码不在开头就无法匹配。

原写法匹配失败的可能原因

结合你的场景(酒店全名FINOLHU、代码FINO),按常理两种写法都应匹配成功,但原写法失效,大概率是以下问题导致:

  • 不可见字符干扰:酒店代码或单元格内容中存在空格、换行符、制表符等肉眼难以察觉的字符。例如代码FINO末尾带有空格,原表达式会寻找包含FINO (带空格)的字符串,而实际全名FINOLHU不包含该内容,因此匹配失败;而修改后的表达式要求以FINO开头,全名恰好符合,所以匹配成功。
  • 字符串格式差异:代码与全名存在全角/半角字符差异,或单元格内容为公式返回的带隐藏格式的文本,导致*通配符无法识别包含关系。

内容的提问来源于stack exchange,提问作者F Otake INPAC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:32:41