Google Spreadsheets:如何在聚合函数中连接字符串

时间:2014-07-26 18:18:59

标签: google-sheets

说我有一张桌子:

A, 1
B, 1
C, 2
D, 1
E, 2

如何查看第2列的表分组,并使用逗号分隔的concat函数聚合第一列,即:

1, "A,B,D"
2, "C,E"

在定义数据透视表和使用QUERY语法时,似乎唯一可用的聚合函数是数字聚合,如MIN,MAX,SUM等。我可以定义自己的聚合函数吗?

3 个答案:

答案 0 :(得分:5)

另一种选择:如果数据在A2:B中,那么,例如,在D2中:

=UNIQUE(B2:B)

然后在E2:

=JOIN(",",FILTER(A$2:A,B$2:B=D2))

根据需要填写。

有一种配方,自动扩展解决方案,虽然它们非常复杂。

答案 1 :(得分:3)

您必须在数据透视表中添加“计算字段”,然后选择“按>自定义汇总”。这将使公式中的列名称引用值的数组(而不是单个值)。然后你可以输入如下公式:

= JOIN(", ", MyStringColumn)

更具体地说,如果您有下表:

Original table

通过转到“数据>数据透视表”创建数据透视表,具有以下配置。确保“Summarize by”设置为“Custom”!

Pivot table

答案 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