分组标签并连接它们的文本值(如数据透视表)

p0l*_*ear 25 pivot-table microsoft-excel microsoft-excel-2010

我有一个包含如下数据的电子表格:

产品 | 属性
----------+----------
产品A | 青色
产品B | 青色
产品 C | 青色
产品A | 品红
产品 C | 品红
产品B | 黄色
产品 C | 黄色
产品A | 黑色的
产品B | 黑色的

我想按 A 列对所有内容进行分组,并使 B 列成为共享 A 列的逗号分隔值列表,如下所示:

产品 | 属性
----------+--------------------------
产品A | 青色、洋红色、黑色
产品B | 青色、黄色、黑色
产品 C | 青色、洋红色、黄色、黑色

不幸的是,数据透视表只知道如何处理数字值,而且它最接近的是计算 A 列出现的次数。

我最终能够通过将数据导入 MySQL 数据库并GROUP_CONCAT(Attribute)在带有GROUP BY Product子句的查询中使用 MySQL 的函数来实现这一点,但是在试图找出 Excel 解决方案时反复将头撞在我的桌子上之后。

为了将来参考,这在没有宏的 Excel 中是否可行?不管是不是,如何才能做到这一点?

wil*_*son 32

   |     A     |     B
---+-----------+-----------
 1 |  PRODUCT  | ATTRIBUTE
 2 | Product A | Cyan
 3 | Product B | Cyan
 4 | Product C | Cyan
 5 | Product A | Magenta
 6 | Product C | Magenta
 7 | Product B | Yellow
 8 | Product C | Yellow
 9 | Product A | Black
10 | Product B | Black
Run Code Online (Sandbox Code Playgroud)

假设第 1:1 行是标题行。

  1. A 列排序以按产品分组

  2. 通过在 C2 中输入以下公式并向下复制到 C3:C10,准备 C 列中逗号分隔格式的数据

    =IF(A2<>A1, B2, C1 & "," & B2)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 通过输入 D2=A2<>A3并向下复制到 D3:D10 来识别有用的行

  4. 复制列 C:D,然后将特殊粘贴为值 ( AltE- S- V- Enter)。您现在将获得:

    Product A    Cyan       Cyan                   FALSE
    Product A    Magenta    Cyan,Magenta           FALSE
    Product A    Black      Cyan,Magenta,Black     TRUE
    Product B    Cyan       Cyan                   FALSE
    Product B    Yellow     Cyan,Yellow            FALSE
    Product B    Black      Cyan,Yellow,Black      TRUE
    Product C    Cyan       Cyan                   FALSE
    Product C    Magenta    Cyan,Magenta           FALSE
    Product C    Yellow     Cyan,Magenta,Yellow    TRUE
    
    Run Code Online (Sandbox Code Playgroud)
  5. 通过FALSE使用 AutoFilter 在 D列中过滤来删除无用的行,然后删除这些行。

  6. 完成。A 列和 C 列正是您所需要的。


Mat*_*and 15

我知道这是一个旧帖子,但我今天遇到了这个挑战。我使用了Microsoft的PowerQuery插件(注意:它默认内置于 Excel 2016 中)。

  1. 选择您的餐桌
  2. 在 POWER QUERY 选项卡(或 2016 年的 DATA)下,选择“From Table”
  3. 点击“产品”栏
  4. 在“转换”选项卡下,选择“分组依据”
  5. 在“视图”选项卡上,确保选中“公式栏”
  6. 改变公式

    从:

    = Table.Group(#"Changed Type", {"Product"}, {{"Count", each Table.RowCount(_), type number}})
    
    Run Code Online (Sandbox Code Playgroud)

    到:

    = Table.Group(#"Changed Type", {"Product"}, {{"Attributes", each Text.Combine([Attribute], ", "), type text}})
    
    Run Code Online (Sandbox Code Playgroud)

    单击此处查看从上方描绘步骤的图片

第 6 步是利用 Power Query (M) 公式来执行未通过 UI 中提供的基本操作公开的数据操作。Microsoft 在线提供了有关 Power Query 中所有可用高级功能的完整参考。