首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google根据另一列中的最小值有效地聚合一列以进行分组?

问Google根据另一列中的最小值有效地聚合一列以进行分组?
EN

Web Applications用户
提问于 2022-03-31 04:19:39
回答 1查看 309关注 0票数 1

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

GroupCol _ NameCol _ NumberCol

示例电子表格(小得多的数据)

在数据集中,GroupCol中的任何给定值都会重复1-10次。

我需要另一张表,它为GroupCol的每一个唯一值都有一行,以及该组的这些聚集度量:

  1. NumberCol中的最低值
  2. 与最低NameCol值匹配的NumberCol值。
  3. 当原始工作表被修改时,这些指标会自动更新(如果不是立即更新,那么在打开工作表时),并在每次单个单元格更改时快速更新,而不是冻结几秒钟。

理想情况下,它还应该执行以下操作,但它们并不那么重要:

  1. 如果一个组中有一个NumberCol的绑定,它将列出所有绑定名称,并以逗号分隔连接。(相对于只列出一个名称)
  2. 在组中以NumberCol表示平均值的度量
  3. 显示组中行数的度量。
  4. 在根据其他列(而不是上面列出的3)中的值计算所有上述指标之前,筛选出行。
  5. 以平面表格格式帮助从其他公式中引用它。

我尝试过的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)的缓慢和笨重的解决方案?

EN

回答 1

Web Applications用户

发布于 2022-03-31 19:13:16

尝试:

代码语言:javascript
复制
={"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))," ",", "),"❄️"," "))})}
票数 0
EN
页面原文内容由Web Applications提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://webapps.stackexchange.com/questions/163795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档