说我有一张桌子:
A, 1
B, 1
C, 2
D, 1
E, 2
如何查看第2列的表分组,并使用逗号分隔的concat函数聚合第一列,即:
1, "A,B,D"
2, "C,E"
在定义数据透视表和使用QUERY语法时,似乎唯一可用的聚合函数是数字聚合,如MIN,MAX,SUM等。我可以定义自己的聚合函数吗?
答案 0 :(得分:5)
另一种选择:如果数据在A2:B中,那么,例如,在D2中:
=UNIQUE(B2:B)
然后在E2:
=JOIN(",",FILTER(A$2:A,B$2:B=D2))
根据需要填写。
有一种配方,自动扩展解决方案,虽然它们非常复杂。
答案 1 :(得分:3)
您必须在数据透视表中添加“计算字段”,然后选择“按>自定义汇总”。这将使公式中的列名称引用值的数组(而不是单个值)。然后你可以输入如下公式:
= JOIN(", ", MyStringColumn)
更具体地说,如果您有下表:
通过转到“数据>数据透视表”创建数据透视表,具有以下配置。确保“Summarize by”设置为“Custom”!
答案 2 :(得分:1)
你是对的,透视表没有简单的方法。不过,这样做会有所帮助。灵感来自这个精彩的答案here。
首先,有一个标题行并在A列上运行排序按类别分组。
到目前为止,在您的示例中,我们有
| A | B
---+-----------+-----------
1 | CATEGORY | ATTRIBUTE
2 | 1 | A
3 | 1 | B
4 | 1 | D
5 | 2 | C
6 | 2 | E
在C列中,让我们准备连接的字符串。使用以下公式从单元格C2开始,并垂直填写。
=IF(A2<>A1, B2, C1 & "," & B2)
......看起来不错......
| A | B | C
---+-----------+-----------+-----------
1 | CATEGORY | ATTRIBUTE | STRINGS
2 | 1 | A | A
3 | 1 | B | A,B
4 | 1 | D | A,B,D
5 | 2 | C | C
6 | 2 | E | C,E
在D栏中,让我们使用以下公式验证我们要在后面的步骤中选择的行,从单元格D2开始并填写。基本上我们正在标记带有完整连接字符串的最终类别行。
=A2<>A3
......现在差不多了
| A | B | C | D
---+-----------+-----------+----------+-----------
1 | CATEGORY | ATTRIBUTE | STRINGS | VALIDATOR
2 | 1 | A | A | FALSE
3 | 1 | B | A,B | FALSE
4 | 1 | D | A,B,D | TRUE
5 | 2 | C | C | FALSE
6 | 2 | E | C,E | TRUE
现在,让我们复制列C和D,并将特殊值作为值粘贴到同一个地方。然后在整个表上添加一个过滤器,并过滤出D列,标记为TRUE。现在,删除过滤器,删除B列和D列以及第1行。
| A | B
---+-----------+-----------
1 | 1 | A,B,D
2 | 2 | C,E
完成。买冰淇淋。观看Road House。