如何在Google Sheets中从句子提取大小写敏感的指定单词
Google Sheets 提取指定小写单词的实现方案
需求说明
- 从句子中提取预设小写单词列表内的词汇,严格区分大小写(仅匹配小写目标词)
- 无匹配项时返回空白或“all good”
- 当前已实现去除标点、转逗号分隔格式,但无法完成目标词筛选;
REGEXEXTRACT仅能提取首个匹配,无法处理多匹配场景 - 当前使用公式:
=textjoin(",",true,split(REGEXREPLACE( C9,"[!@#$%^&*().,。]","")," "))
示例场景
| 目标单词 | 句子 | 期望结果 |
|---|---|---|
| apple | the bear ate an apple up the tree. | bear,apple,up |
| bear | i like potato | (空白) |
| up | you hate apple pie? | apple |
| (空白) | i went, up the apple tree | up,tree |
可行解决方案
方案1:提取预设单词列表中的所有匹配项(区分大小写)
假设预设单词列表存储在$A$2:$A$5(例如包含apple、bear、up、tree),待处理句子在C9单元格,使用以下公式:
=TEXTJOIN(",", TRUE, FILTER(SPLIT(REGEXREPLACE(C9, "[!@#$%^&*().,。]", ""), " "), ISNUMBER(MATCH(SPLIT(REGEXREPLACE(C9, "[!@#$%^&*().,。]", ""), " "), $A$2:$A$5, 0))))
公式逻辑:
- 先去除句子中的标点符号
- 将句子按空格拆分为单个单词的数组
- 检查每个单词是否存在于预设列表中
- 筛选出匹配的单词,用逗号连接输出
方案2:提取指定单个目标词的所有匹配(严格区分大小写)
若每行的目标词存储在B列(如示例中的B9),仅提取与该目标词完全一致的小写单词,使用以下公式:
=TEXTJOIN(",", TRUE, FILTER(SPLIT(REGEXREPLACE(C9, "[!@#$%^&*().,。]", ""), " "), EXACT(SPLIT(REGEXREPLACE(C9, "[!@#$%^&*().,。]", ""), " "), B9)))
公式逻辑:
- 用
EXACT函数实现严格大小写匹配,确保仅提取与目标词完全一致的小写词汇
无匹配时返回“all good”
用IFERROR包装公式,无匹配时返回指定文本:
=IFERROR(TEXTJOIN(",", TRUE, FILTER(SPLIT(REGEXREPLACE(C9, "[!@#$%^&*().,。]", ""), " "), ISNUMBER(MATCH(SPLIT(REGEXREPLACE(C9, "[!@#$%^&*().,。]", ""), " "), $A$2:$A$5, 0)))), "all good")
内容的提问来源于stack exchange,提问作者fancy potato
相关产品推荐
相关产品推荐

