Google Sheets中QUERY函数如何简化多列IS NOT NULL判断
Google Sheets QUERY多列非空判断精简方案
不需要逐列重复编写IS NOT NULL判断语句,有更精简的实现方式,你原公式里还重复写了两次Col1 is not null,属于无效冗余。
核心优化点
- QUERY支持连续列选择语法,你要选Col1到Col17的连续列,不需要逐列罗列,直接写
Col1-Col17即可。 - QUERY的字符串拼接规则为:只要参与拼接的任意字段为null,整个拼接结果就返回null,利用这个特性,你只需要写一次非空判断,就能实现「所有列均不为空」的筛选逻辑,不需要写N个
and ColX is not null。
精简后公式(静态版)
适合列数固定、不需要后续频繁调整列范围的场景:
=QUERY( {AG4:AW101}, "Select Col1-Col17 where Col1&Col2&Col3&Col4&Col5&Col6&Col7&Col8&Col9&Col10&Col11&Col12&Col13&Col14&Col15&Col16&Col17 is not null order by Col"&$N$1&" "&$N$2&"")
精简后公式(动态版)
适合后续可能调整判断列数的场景,不需要手动拼接列名,公式自动生成判断逻辑:
=QUERY( {AG4:AW101}, "Select Col1-Col17 where "&TEXTJOIN("&",1,"Col"&SEQUENCE(17))&" is not null order by Col"&$N$1&" "&$N$2&"")
如果后续要把判断列数改成20列,只需要把SEQUENCE(17)里的17改成20即可,不需要逐列加判断条件。
注意事项
如果你的数据里存在公式返回的空文本""(比如IF公式返回的空结果),上面的写法会把空文本判定为非空(空文本不属于null)。如果需要同时过滤null和空文本,可以把where条件替换为:
"where "&TEXTJOIN("<>'' and ",1,"Col"&SEQUENCE(17))&"<>''"
内容的提问来源于stack exchange,提问作者Verminous
相关产品推荐
相关产品推荐

