You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets:基于拆分字符串的多关键词模糊筛选需求

Google Sheets 单单元格多关键词模糊筛选方案(支持任意/全部匹配)

核心需求实现

针对你要在A2单元格输入逗号分隔关键词,实现G3:G12的部分匹配筛选,同时支持“匹配任意”或“匹配全部”的需求,可通过以下公式组合实现:

1. 匹配任意关键词(包含任一关键词即返回)

直接用正则表达式的|逻辑,结合拆分、修剪关键词,实现模糊匹配:

=FILTER(
  A3:L12,
  ARRAYFORMULA(
    REGEXMATCH(
      G3:G12,
      "(?i)" & JOIN("|", TRIM(SPLIT(A2, ",")))
    )
  )
)
  • TRIM(SPLIT(A2, ",")):拆分A2的逗号分隔关键词,并去掉每个关键词前后的空格
  • JOIN("|", ...):把关键词拼接成正则的“或”条件(比如Bl|Green|Red)
  • (?i):让正则匹配忽略大小写
  • REGEXMATCH:检查G列单元格是否包含任一关键词(支持部分匹配,比如Bl会匹配Black/Blue)

2. 匹配全部关键词(需包含所有关键词才返回)

通过统计每个单元格匹配到的关键词数量,判断是否等于总关键词数:

=FILTER(
  A3:L12,
  ARRAYFORMULA(
    SUMPRODUCT(
      --REGEXMATCH(G3:G12, "(?i)" & TRIM(SPLIT(A2, ",")))
    ) = COUNTA(TRIM(SPLIT(A2, ",")))
  )
)
  • --REGEXMATCH(...):把布尔匹配结果转成1(匹配)或0(不匹配)
  • SUMPRODUCT:统计每个单元格匹配到的关键词总数
  • COUNTA(...):统计输入的关键词总数,两者相等即代表全部匹配

3. 切换“任意/全部”匹配模式

在B2单元格添加下拉菜单(选项为“匹配任意”“匹配全部”),用IF函数切换两种逻辑,同时兼容A2为空时返回全部数据:

=IF(
  A2="",
  A3:L12,
  FILTER(
    A3:L12,
    ARRAYFORMULA(
      IF(
        B2="匹配任意",
        REGEXMATCH(G3:G12, "(?i)" & JOIN("|", TRIM(SPLIT(A2, ",")))),
        SUMPRODUCT(--REGEXMATCH(G3:G12, "(?i)" & TRIM(SPLIT(A2, ",")))) = COUNTA(TRIM(SPLIT(A2, ",")))
      )
    )
  )
)

与现有复杂筛选结合

如果要和你已有的数值范围、复选框等筛选条件结合,只需在FILTER的条件中用*(代表逻辑与)拼接其他条件即可。比如已有条件是“C列数值>10”,公式可修改为:

=IF(
  A2="",
  FILTER(A3:L12, C3:C12>10),
  FILTER(
    A3:L12,
    ARRAYFORMULA(
      (C3:C12>10) *
      IF(
        B2="匹配任意",
        REGEXMATCH(G3:G12, "(?i)" & JOIN("|", TRIM(SPLIT(A2, ",")))),
        SUMPRODUCT(--REGEXMATCH(G3:G12, "(?i)" & TRIM(SPLIT(A2, ",")))) = COUNTA(TRIM(SPLIT(A2, ",")))
      )
    )
  )
)

内容的提问来源于stack exchange,提问作者RJoshField

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 18:38:13