我正在尝试为每组第一组找到一个简单的解决方案。
我有一个数据表,第一列日期和休息数据。我想基于日期进行分组,因为每个日期允许多个条目。对于第二列有些数字,但想要FIRST记录。
目前我可以使用的聚合函数是MIN()但是它将返回最低值而不是第一个。
A B
01/01/2018 10
01/01/2018 15
02/01/2018 10
02/01/2018 2
02/01/2018 100
02/01/2018 20
03/01/2018 5
03/01/2018 2
期望的输出
A B
01/01/2018 10
02/01/2018 10
03/01/2018 5
使用MIN()的当前结果 - 不期望的
A B
01/01/2018 10
02/01/2018 2
03/01/2018 2
遗憾的是,Google表格中没有FIRST()聚合函数,这会让这更容易。
我看到了几个使用行号和ArrayQuery的例子,但这似乎对我没有用。大约有5000行数据,因此尽量保持这种效率,并且不必在任何更改时重新计算整个工作表,每次都需要几秒钟。
目前我有这个,它附加第三列的行号:
=query({A1:B, arrayformula(row(A1:B))}, "select min(Col1),min(Col2) group by Col1")
谢谢
编辑1
建议的解决方案是=SORTN(A:B,2^99,2,1,1)
,这是一个简单的简单。但是,这需要大范围的“可用空间”来显示返回的数据集。想象一下3000多行。
我希望有一个基于QUERY()
的解决方案,因为我想对结果进行进一步的操作。具体而言,计算不同值的出现次数。
例如:我想要一个返回的数据集
A B
01/01/2018 10
02/01/2018 10
03/01/2018 5
然而,我想计算这些值的出现次数(然后忽略日期)。例如:
B C
10 2
5 1
也许我通过使用数字混淆了这种情况? ColB中的“数据”是TEXT(短3个字母代码),但是我使用数字来表示我不能使用MIN()函数,因为它返回数值最低的值。
所以在信中:
=SORTN(A:B,2^99,2,1,1)
如果您的数据按样本排序,则可以使用SORTN()轻松删除重复项