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 行是标题行。
按A 列排序以按产品分组
通过在 C2 中输入以下公式并向下复制到 C3:C10,准备 C 列中逗号分隔格式的数据。
=IF(A2<>A1, B2, C1 & "," & B2)
Run Code Online (Sandbox Code Playgroud)通过输入 D2=A2<>A3
并向下复制到 D3:D10 来识别有用的行。
复制列 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)通过FALSE
使用 AutoFilter 在 D列中过滤来删除无用的行,然后删除这些行。
完成。A 列和 C 列正是您所需要的。
Mat*_*and 15
我知道这是一个旧帖子,但我今天遇到了这个挑战。我使用了Microsoft的PowerQuery插件(注意:它默认内置于 Excel 2016 中)。
改变公式
从:
= 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 中所有可用高级功能的完整参考。