如何用Query筛选多数据类型表格并保留数值型数据降序排列
解决方法
直接使用以下Query公式即可实现需求:
=QUERY({B:B, F:F}, "SELECT Col1, Col2 WHERE Col2 IS NOT NULL AND Col2 >= 0 ORDER BY Col2 DESC", 1)
公式说明
{B:B, F:F}:将姓名列(B列)和数据列(F列)合并为一个虚拟数组,让Query可以同时处理两列数据WHERE Col2 IS NOT NULL:过滤掉数据列中的空值Col2 >= 0:利用Query的特性,非数值类型的数据无法满足数值比较条件,会被自动过滤;如果你的数据包含负数,可将条件改为Col2 <= 999999(或其他足够大的数值),同样能过滤非数值ORDER BY Col2 DESC:按数据列的数值进行降序排列- 最后的
1:指定第一行为表头,确保输出的表格保留表头结构
为什么ARRAYFORMULA+ISNUMBER的方式没成功?
当你尝试用ARRAYFORMULA(ISNUMBER(F:F))生成布尔数组再传入Query时,Query的WHERE子句需要将布尔值转化为可识别的条件,这种方式容易因为数组结构不匹配导致失效。而直接用数值比较的方式更简洁,且能直接利用Query对数据类型的自动判断,过滤非数值数据。
执行上述公式后,输出结果将与你期望的表格完全一致:
| Name | Data |
|---|---|
| Max Mustermann | 15 |
| Robert Miller | 5 |
| James Brown | 1 |
内容的提问来源于stack exchange,提问作者Michael1509
相关产品推荐
相关产品推荐

