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
你之前尝试的问题点:
- 第一个FILTER公式未完成条件编写,且未正确用
+实现OR逻辑 - 第二个FILTER公式用了分号(部分地区设置中分号代表AND逻辑),导致变成"同时包含两个文本"的AND条件,而非需求的"任一满足"的OR条件
内容的提问来源于stack exchange,提问作者Julien Alart
相关产品推荐
相关产品推荐

