我有一个超过1000行的工作表,其模式如下:
GroupCol _ NameCol _ NumberCol

在数据集中,GroupCol中的任何给定值都会重复1-10次。
我需要另一张表,它为GroupCol的每一个唯一值都有一行,以及该组的这些聚集度量:

理想情况下,它还应该执行以下操作,但它们并不那么重要:
我尝试过的What:
1.枢轴表.
这在Excel中有效,它允许您从任意其他列中添加Top的值筛选器。我将NumberCol添加到值中。对于行,我先添加了GroupCol,然后添加了NameCol。然后我给NameCol添加了一个值过滤器,这只占用了NumberCol的前1名。在调整了一些设置之后,我能够将聚合显示为一个平面表,而不是主细节网格。
但据我所知,Google并没有枢轴表的Top X功能,所以这是行不通的。
2 :为一列抓取所有组的唯一函数,以及聚合表的每个其他单元格中基于筛选的查找聚合。
这很管用,但速度很慢。当编辑原始数据中的NumberCol值时,整个应用程序在重新计算所有聚合数据时冻结约3秒。此外,如果调整任何聚合公式,则必须将这些更改拖到所有400+聚合行中,这很费时。
单元格A2,用独特的组填充头A:
= UNIQUE(Data!$A$2:$A)
B栏,最低编号(填写rowNum):
= IFERROR(SMALL(FILTER(Data!$C$2:$C, Data!$A$2:$A = A), 1), "")
C栏,对应的名称(填写rowNum):
= TEXTJOIN(", ", TRUE, FILTER(Data!$B$2:$B, (Data!$A$2:$A=A2) * (Data!$C$2:$C = B2) ))
3. ARRAYFORMULA与(2)相同,但每个单元格中没有单独的公式。
我不能让它工作,我想,因为每个单元格的公式已经是基于过滤器函数的数组。我也尝试过其他查找函数,而不是过滤器,但它们似乎都阻止了ARRAYFORMULA。我想ARRAYFORMULA不能作为一个聚合器工作?
查询公式
查询API似乎缺少了我需要的功能。Group只有有限的聚合方法,它不允许使用一个列的最小值来聚合不同的列。联接是不存在的。
Any建议?我是否必须坚持(2)的缓慢和笨重的解决方案?
发布于 2022-03-31 19:13:16
尝试:
={"Group","Lowest","Name";
sort({unique(filter(A2:A,A2:A<>"")),transpose(index(
query(if(transpose(unique(filter(A2:A,A2:A<>"")))=
filter(A2:A,A2:A<>""),filter(C2:C,A2:A<>""),),
"select min(Col"&join("), min(Col",sequence(countunique(A2:A)))&")"),2)),
transpose(substitute(substitute(trim(
query(substitute(if((transpose(unique(filter(A2:A,A2:A<>"")))=filter(A2:A,A2:A<>""))*
(index(query(if(transpose(unique(filter(A2:A,A2:A<>"")))=filter(A2:A,A2:A<>""),
filter(C2:C,A2:A<>""),),
"select min(Col"&join("), min(Col",sequence(countunique(A2:A)))&")"),2)=
filter(C2:C,A2:A<>"")),filter(B2:B,A2:A<>""),)," ","❄️"),,9^9))," ",", "),"❄️"," "))})}
https://webapps.stackexchange.com/questions/163795
复制相似问题