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

Google Sheet多条件过滤:基于Sheet2筛选符合规则的内容

Google Sheets 筛选满足多OR条件的全列数据

下面提供两种符合需求的实现方案,分别基于你提到的FILTER和QUERY函数:

方法1:使用FILTER函数

在sheet3的A1单元格输入以下公式:

=FILTER(sheet2!A2:Z,
  (REGEXMATCH(TEXT(sheet2!R2:R, "0"), "^6") +
   (sheet2!R2:R = 380) +
   ISNUMBER(SEARCH("SPENDESK", sheet2!R2:R)) +
   ISNUMBER(SEARCH("AUTOLIQUIDATION", sheet2!R2:R))),
  sheet2!A2:A <> ""
)

公式细节说明:

  • REGEXMATCH(TEXT(sheet2!R2:R, "0"), "^6"):将R列数据统一转为文本格式,匹配以6开头的内容,兼容数字、文本两种格式的R列数据
  • sheet2!R2:R = 380:精确匹配R列值为380的行
  • ISNUMBER(SEARCH("SPENDESK", sheet2!R2:R)):检查R列是否包含文本SPENDESK(SEARCH不区分大小写,需区分的话替换为FIND)
  • 条件之间用+连接,表示任一条件满足即筛选该行(FILTER中逗号代表AND逻辑,加号代表OR逻辑)
  • 最后sheet2!A2:A <> ""用于过滤空行,避免显示无有效数据的行

方法2:使用QUERY函数

若偏好SQL风格语法,可使用以下公式:

=QUERY(sheet2!A:Z,
  "SELECT * WHERE 
    R MATCHES '^6.*' OR 
    R = 380 OR 
    R CONTAINS 'SPENDESK' OR 
    R CONTAINS 'AUTOLIQUIDATION'
    AND A IS NOT NULL",
  1
)

公式细节说明:

  • SELECT *:返回所有列的完整数据
  • R MATCHES '^6.*':用正则表达式匹配R列以6开头的内容
  • R = 380:精确匹配数值380(若R列是文本格式,改为R = '380')
  • R CONTAINS 'SPENDESK':检查R列是否包含指定文本(默认不区分大小写)
  • AND A IS NOT NULL:过滤A列为空的无效行
  • 最后参数1表示数据第一行是表头,无表头则改为0

你之前尝试的问题点:

  1. 第一个FILTER公式未完成条件编写,且未正确用+实现OR逻辑
  2. 第二个FILTER公式用了分号(部分地区设置中分号代表AND逻辑),导致变成"同时包含两个文本"的AND条件,而非需求的"任一满足"的OR条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:10:17