如何在Google Sheets中按需提取单词单复数:单/复/双场景适配
Google Sheets 单复数文本精准提取方案
现状与需求
当前使用的公式
C2、C3、C4单元格分别使用以下公式:
- C2公式:
=ifna( transpose( query(TRANSPOSE(iferror( {REGEXEXTRACT(A2,"(?)Fruits"),REGEXEXTRACT(A2,"(?)Fruit")})),"Select * where Col1<>'' ")),"")
- C3公式:
=ifna( transpose( query(TRANSPOSE(iferror( {REGEXEXTRACT(A3,"(?)Fruits"),REGEXEXTRACT(A3,"(?)Fruit")})),"Select * where Col1<>'' ")),"")
- C4公式:
=ifna( transpose( query(TRANSPOSE(iferror( {REGEXEXTRACT(A4,"(?)Fruits"),REGEXEXTRACT(A4,"(?)Fruit")})),"Select * where Col1<>'' ")),"")
当前输出
| Item 1 | Item 2 | Item 3 | Item 4 |
|---|---|---|---|
| Fruits basket | Fruits | Fruit | |
| Fruit juice | Fruit | ||
| Fruit juice and Fruits Basket | Fruits | Fruit |
预期效果
- C2仅输出
Fruits,D2为空; - C3保留
Fruit输出; - C4和D4同时输出
Fruits和Fruit。
预期输出:
| Item 1 | Item 2 | Item 3 | Item 4 |
|---|---|---|---|
| Fruits basket | Fruits | ||
| Fruit juice | Fruit | ||
| Fruit juice and Fruits Basket | Fruits | Fruit |
核心逻辑:仅存在复数时提取复数,仅存在单数时提取单数,两者都存在时同时提取。
解决方案
方法1:分单元格单独配置公式
- C列公式(C2下拉到C4):
=IF(AND(REGEXMATCH(A2,"Fruits"),REGEXMATCH(A2,"Fruit")), "Fruits", IF(REGEXMATCH(A2,"Fruits"), "Fruits", IF(REGEXMATCH(A2,"Fruit"), "Fruit", "")))
- D列公式(D2下拉到D4):
=IF(AND(REGEXMATCH(A2,"Fruits"),REGEXMATCH(A2,"Fruit")), "Fruit", "")
方法2:数组公式批量处理
选中C2单元格,输入以下公式后按回车(Google Sheets自动识别数组公式):
=ARRAYFORMULA(IF(A2:A4="",, IF(REGEXMATCH(A2:A4,"Fruits")*REGEXMATCH(A2:A4,"Fruit"), {"Fruits","Fruit"}, IF(REGEXMATCH(A2:A4,"Fruits"), {"Fruits",""}, IF(REGEXMATCH(A2:A4,"Fruit"), {"Fruit",""}, {"",""})))))
该公式会自动填充C2:D4区域,一次性满足所有需求。
逻辑说明
- 优先判断单元格是否同时包含
Fruits和Fruit:若是则分别输出到C、D列; - 仅包含
Fruits时,C列输出复数,D列留空; - 仅包含
Fruit时,C列输出单数,D列留空; - 两者都不包含时,两列均留空。
内容的提问来源于stack exchange,提问作者Lod
相关产品推荐
相关产品推荐

