如何在多条件INDEX MATCH中实现模糊匹配包含指定字符串的单元格
问题原因
Excel仅在MATCH函数的第一个查找参数、且匹配模式设为0(精确匹配)时才会识别通配符*,你原来的公式里直接写(A:A="*Carl*"),等于号对比会把*当成普通文本处理,自然无法命中包含Carl的单元格。
调整方案
方案1:ISNUMBER+SEARCH组合(兼容性好,支持多条件灵活组合)
这是最常用的实现方式,旧版Excel、WPS都能正常运行,可随意组合多个模糊/精确匹配条件:
=IFERROR(INDEX(C:C,MATCH(1,(B:B="Flit")*ISNUMBER(SEARCH("Carl",A:A)),0)),"")
逻辑说明:
SEARCH("Carl",A:A)会返回Carl在A列单元格中的字符起始位置,找不到则返回错误值- 套
ISNUMBER后,所有包含Carl的单元格会返回TRUE,否则返回FALSE - 两个布尔条件相乘,只有同时满足「B列等于Flit」+「A列包含Carl」的行结果为1,
MATCH找到1的位置后即可返回对应C列的ID值 - 要区分大小写的模糊匹配,把
SEARCH换成FIND即可 - 如果使用Excel 2019及更早版本,公式输入完成后需按
Ctrl+Shift+Enter三键触发数组运算才能正常返回结果
方案2:拼接匹配内容(写法简洁,适合少条件场景)
把多列内容拼接后统一做模糊匹配,通配符直接写在MATCH的第一个参数中即可生效:
=IFERROR(INDEX(C:C,MATCH("*Carl*"&"Flit",A:A&B:B,0)),"")
逻辑说明:
- 把A列和B列的内容逐行拼接成新的字符串
- 直接用带通配符的
*Carl*Flit去匹配拼接后的内容,即可同时命中两个条件
注:原场景2的公式列标存在笔误,示例数据中ID存放在C列,使用时请根据实际表格的列号调整引用范围。
内容的提问来源于stack exchange,提问作者Carlos Armobit
相关产品推荐
相关产品推荐

