Excel中匹配两列多字符串,第三列标记匹配结果(true/false)
Excel公式实现:判断A列是否包含B列任意单个字符串或完全匹配
我来帮你搞定这个需求!要实现当A列单元格包含B列单元格中的任意单个完整字符串,或者与B列单元格完全匹配时,C列返回TRUE,否则返回FALSE,可以用以下两种公式方案,适配不同版本的Excel:
方案1:适用于Excel 365/2021及以上版本(支持TEXTSPLIT)
在C1单元格输入以下公式,然后下拉填充即可:
=SUMPRODUCT(--ISNUMBER(SEARCH(" "&TEXTSPLIT(B1," ")&" "," "&A1&" ")))>0
公式拆解说明:
TEXTSPLIT(B1," "):把B列单元格的内容按空格拆分成独立单词的数组(比如B1是black dog,会拆成{"black","dog"})" "&TEXTSPLIT(...)&" ":给每个拆分后的单词前后添加空格,避免匹配子字符串(比如防止把doggy误判为包含dog)" "&A1&" ":给A列的内容前后也添加空格,保证匹配规则统一SEARCH(...):在处理后的A列内容中查找每个处理后的单词,找到返回位置数字,找不到返回错误值ISNUMBER(...):将SEARCH的结果转换为布尔值,找到就是TRUE,否则FALSE--:把布尔值转换成1(对应TRUE)和0(对应FALSE)SUMPRODUCT(...)>0:将所有结果求和,只要和大于0,说明至少有一个单词匹配,返回TRUE,否则返回FALSE
方案2:适用于旧版Excel(无TEXTSPLIT,用FILTERXML替代)
如果你的Excel版本不支持TEXTSPLIT,可以用这个公式:
=SUMPRODUCT(--ISNUMBER(SEARCH(" "&FILTERXML("<t><s>"&SUBSTITUTE(B1," ","</s><s>")&"</s></t>","//s")&" "," "&A1&" ")))>0
核心差异说明:
用FILTERXML("<t><s>"&SUBSTITUTE(B1," ","</s><s>")&"</s></t>","//s")替代TEXTSPLIT,原理是把B列内容转换成XML格式的字符串,再提取每个独立的单词,效果和TEXTSPLIT完全一致。
结合你的示例验证:
| A列内容 | B列内容 | C列公式返回结果 |
|---|---|---|
| white dog | black dog | TRUE |
| big tall | tall building | TRUE |
| wood | green wood | TRUE |
| big house | green wood | FALSE |
| long way | street | FALSE |
完全符合你给出的预期效果哦!
内容的提问来源于stack exchange,提问作者DemGergo
相关产品推荐
相关产品推荐

