GSheet公式:逐行检查句子是否包含指定列任意词汇
Google表格逐行匹配「Word Check」列单词的实现方法
直接用下面的现成公式即可,不需要复杂嵌套,适配绝大多数使用场景:
方案1:整词精准匹配(推荐,不会误判)
假设你的句子内容存放在A列(第1行是表头,数据从第2行开始),待检查的单词列表在名为「Word Check」的列(即C列),检查结果需要填写在B列对应行:
- 点击B2单元格,输入下方公式
- 按下回车后,选中B2单元格下拉填充整列,所有行的检查结果会自动生成
=IF(REGEXMATCH(LOWER(A2), TEXTJOIN("|", TRUE, "\\b"&FILTER(LOWER(C:C), C:C<>"")&"\\b")), "命中", "未命中")
公式逻辑说明:
- 自动忽略大小写差异,比如句子里的
Apple和词表中的apple会判定为匹配 - 自动跳过「Word Check」列的空单元格,后续你在该列新增待检查单词不需要修改公式
- 带单词边界校验,不会出现短词误匹配长单词的问题:比如词表中有
cat,不会把句子里的category误判为命中 - 公式里的
"命中"和"未命中"可以替换成你需要的标注内容,比如改成"是"/"否"都可以
方案2:特殊字符兼容方案
如果你的待检查单词里包含*、?、.这类正则特殊符号,用方案1可能出现匹配错误,换用下面的公式即可,使用方法和方案1一致:
=IF(SUMPRODUCT(--ISNUMBER(SEARCH(TRANSPOSE(FILTER(C:C, C:C<>"")), A2)))>0, "命中", "未命中")
这个公式会逐个遍历「Word Check」列的所有非空单词,只要当前行句子里包含任意一个单词就判定为命中,不受特殊字符影响。
调整提示
- 如果你的句子列、「Word Check」列实际位置不是A列、C列,把公式里对应的
A2、C:C改成你实际表格的列标识即可 - 如果不需要整词精准匹配,只要存在字符重合就算命中,把方案1公式里的
"\\b"&和&"\\b"两段删掉即可 - 待检查单词量特别大时公式计算会有1-2秒延迟,属于正常情况
内容的提问来源于stack exchange,提问作者Martin Hogg
相关产品推荐
相关产品推荐

