Google表格查询 - 按日期排序;空白/空底部

时间:2018-03-16 06:41:19

标签: date null sql-order-by google-sheets-query

在Google表格中运行查询时遇到问题。数组公式查询的结果是正确的,但用于排序结果的列(Col1)由空白/空单元格和日期组成。因此,当按此列排序时,在日期之前首先列出空白/空值。是否可以将日期排在第一位并将空白/空单元格推到底部?

由DESC订购将无法正常工作,因为我希望首先列出早期日期。此外,无法从结果中完全排除空白/空单元格(例如,它们对应于没有截止日期但仍必须列出的任务)。

我目前使用的公式是:

= ARRAYFORMULA((QUERY({DATA RANGE},“SELECT Col1 WHERE Col2 = X OR Col3 = X ORDER BY Col1 LIMIT 10”,0))

似乎有一种简单的方法可以实现这一目标但我在其他论坛中找不到关于该主题的任何内容。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用SORT()

我相信您的示例可以使它像这样工作:

=SORT(ARRAYFORMULA((QUERY({DATA RANGE},"SELECT Col1 WHERE Col2 = X OR Col3 = X",0)), 1, 1)(未经测试)

如果您的LIMIT 10很重要,那么我认为您可以将整个内容包装在另一个查询中,然后重新添加LIMIT

示例

需要查询和排序的范围

enter image description here

公式

简单版本,定义了省略标题的范围:

=SORT(QUERY(A2:B7, "select *"), 1, 1)

处理标头的版本:

={A1:B1;SORT(QUERY(tabname!A2:B7, "select *"), 1, 1)}

此版本创建了一个将标题行和数据行组合在一起的数组,因此它可以独立于标题对数据行进行排序。

查询和排序的结果

enter image description here

分解公式成分

Array {[range 1]; [range 2]}

SORT() SORT([range], [column to sort on], [sort ascending - true/false or 1/0)

Query() QUERY([range], "[query]")