如何在Google Sheets QUERY公式中加入F11条件实现多条件动态查询?
Google Sheets 多条件动态筛选公式修改方案
需求
现有单个条件(C11)的QUERY查询公式,需新增第二个条件(F11),实现同时满足两个条件或满足任意一个条件的动态筛选;当两个条件都为空时,显示全部数据。
原公式
=if(C11<>""; QUERY(Dados!A1:V;"select A, B, E, L, ' ', M, N, O, G, F, P, Q, R, T, I, J where H matches '"&C11&"'"); QUERY(Dados!A1:V;"select A, B, E, L, ' ', M, N, O, G, F, P, Q, R, T, I, J where A is not null label ' ' ' '"))
修改后公式(无需MAP函数)
1. 满足任意一个条件(C11 或 F11)
=IF(AND(C11="", F11=""), QUERY(Dados!A1:V,"select A, B, E, L, ' ', M, N, O, G, F, P, Q, R, T, I, J where A is not null label ' ' ' '"), QUERY(Dados!A1:V,"select A, B, E, L, ' ', M, N, O, G, F, P, Q, R, T, I, J where (H matches '"&IF(C11="",".*",C11)&"' OR K matches '"&IF(F11="",".*",F11)&"') label ' ' ' '") )
注:假设F11对应数据列是K,若实际对应其他列,直接替换公式里的
K即可。空条件时用正则.*匹配该列所有内容,实现动态忽略空条件的效果。
2. 同时满足两个条件(C11 且 F11)
把上述公式里的OR换成AND即可:
=IF(AND(C11="", F11=""), QUERY(Dados!A1:V,"select A, B, E, L, ' ', M, N, O, G, F, P, Q, R, T, I, J where A is not null label ' ' ' '"), QUERY(Dados!A1:V,"select A, B, E, L, ' ', M, N, O, G, F, P, Q, R, T, I, J where (H matches '"&IF(C11="",".*",C11)&"' AND K matches '"&IF(F11="",".*",F11)&"') label ' ' ' '") )
逻辑说明
- 外层
IF判断两个条件是否都为空,是则返回全量数据; - 内层通过
IF(C11="",".*",C11)处理空条件:单元格为空时用.*匹配该列所有内容,相当于忽略此条件; - 用
OR/AND组合条件,实现"任意满足"或"同时满足"的筛选规则。
内容的提问来源于stack exchange,提问作者onit
相关产品推荐
相关产品推荐

