Excel如何查找并拼接单元格内匹配到的多个关键词
可输出所有匹配关键词的Excel实现方法
你现在用的 =XLOOKUP(1,--ISNUMBER(SEARCH($C:$C,A1)),$C:$C,"no match",2),本身的逻辑就是找到第一个符合匹配条件的结果就返回,所以碰到A列单元格同时包含C列多个关键词的场景,只能输出最先检索到的那一个,没法把所有命中的关键词都列出来。
不同Excel版本的替换方案
- 适配Excel 365、Excel 2021及以上带动态数组功能的版本:
直接在B1单元格输入下面的公式,下拉填充就能自动匹配所有行:
=LET( matched_items, FILTER($C:$C, ISNUMBER(SEARCH($C:$C, A1)), ""), IF(matched_items="", "no match", TEXTJOIN("、", TRUE, matched_items)) )
这个公式会逐行检查C列所有关键词是否在对应A列的内容里存在,把所有命中的关键词都筛出来;如果没找到任何匹配项就返回"no match",找到的话就用顿号把所有关键词拼成完整字符串。比如A单元格同时提到Orange、Yellow两个关键词,会直接输出Orange、Yellow,不会漏匹配项。
- 适配没有动态数组、但支持TEXTJOIN函数的旧版本Excel:
把公式里的整列引用换成实际存放关键词的固定范围(比如C1到C100,别直接用整列引用,不然跑起来会卡),输完公式按Ctrl+Shift+Enter确认成数组公式就能用:
=TEXTJOIN("、", TRUE, IF(ISNUMBER(SEARCH($C$1:$C$100, A1)), $C$1:$C$100, ""))
实用调整提示
- SEARCH默认是不区分大小写的模糊匹配,如果需要严格按大小写核对关键词,把公式里的
SEARCH换成FIND就行。 - 要是拼接的时候不需要顿号分隔,把TEXTJOIN里的第一个参数
"、"改成你需要的分隔符(比如空格、半角逗号)就可以。
内容的提问来源于stack exchange,提问作者Void S
相关产品推荐
相关产品推荐

