Google Sheets数组匹配问题:判断E列关键词是否存在于C列标题
问题:判断E列关键词是否存在于C列人员标题(现有公式失效)
我需要判断E列中的任意关键词是否存在于C列的人员标题中,但当前使用的公式无法正常工作。
当前使用的公式
=ArrayFormula(INDEX(E$2:E$1000,MAX(IF(ISERROR(find(E$2:E$1000,C2)),-1,1)*(ROW(E$2:E$1000)-ROW(E$2)+1))))
效果说明
- 当前效果:公式返回结果不符合预期,部分匹配关键词的单元格未正确识别,无匹配时返回错误值
- 期望效果:每个C列标题对应的E列匹配关键词被准确提取显示,无匹配时可显示指定内容(如“无匹配”)
修正方案
方案1:返回第一个匹配的关键词
如果只需要返回第一个匹配到的E列关键词,使用以下公式:
=ArrayFormula(IFERROR(XLOOKUP(TRUE,ISNUMBER(FIND(E$2:E$1000,C2)),E$2:E$1000,"无匹配"),"无匹配"))
方案2:返回所有匹配的关键词(逗号分隔)
如果需要把所有匹配到的关键词都列出来,用逗号分隔,使用以下公式:
=ArrayFormula(TEXTJOIN(", ",TRUE,IF(ISNUMBER(FIND(E$2:E$1000,C2)),E$2:E$1000,"")))
原公式问题分析
原公式通过MAX函数取匹配项的最大行号,再用INDEX提取对应关键词,存在两个问题:
- 无任何匹配时,
MAX会返回-1,导致INDEX引用无效行号,出现错误 - 多个关键词匹配时,只会返回最后一个(行号最大的)匹配项,无法满足提取第一个或全部匹配项的需求
内容的提问来源于stack exchange,提问作者kernelrpc_mach_vm_protect
相关产品推荐
相关产品推荐

