Excel - 一个单元格中的数据透视表值(以逗号分隔的值)
我有两列数据:
供应商1|产品1 供应商1|产品2 供应商1|产品4 供应商1|产品7 供应商2|产品3 供应商2|产品5
我想围绕供应商进行“枢轴”,并在一个单元格中提供产品列表,以逗号分隔,例如
供应商1|产品1,产品2,产品4,产品7 供应商2|产品3,产品5
大约有 1000 个供应商,且 0 < 产品 <= 10。
我目前的解决方法是使用数据透视表、保存为 CSV 等,非常麻烦。非 VBA 解决方案会很棒。
答案1
这是一个非 VBA、非数据透视表的解决方案,仅使用几个公式。
首先,我使用“文本到列”功能将数据在“管道”分隔符(垂直线)处拆分为 2 列;“供应商”列和“产品”列。它们分别位于 A 列和 B 列中。(在您的帖子中,它们合并在一列中,因此我首先将它们分开。您不必这样做。)
在 C 列(我将其命名为“连接”列)中,我使用了这个公式,从单元格 C2 开始一直向下复制:=IF(A2=A1,C1&", " & B2,A2&"|"&B2)
在 D 列中,我将其命名为“SupplierChangesAtNextLine?”我使用了这个公式(从 D2 开始一直向下复制):=IF(A2=A3,"","Changed")
现在您应该能够在 D 列中仅筛选出“更改”的值。
祝狩猎愉快!
答案2
C1 C2 C3 C4
a 1 1
a 2 2,1
a 3 3,2,1
a 5 5,3,2,1
a 3 3,5,3,2,1 New
b 11 11
b 13 13,11
b 11 11,13,11
b 14 14,11,13,11 New
c 22 22
c 24 24,22 New
f 25 25
f 11 11,25
f 10 10,11,25 New
- 在 col3(即 C3)中,使用公式 =IF(A2=A1,B2&","&C1,B2) 从单元格 C2 开始并将其向下拖动。
- 在 C4(表示第 4 列)中使用公式 =IF(A2=A3,"","changed") 从单元格 D2 开始并将其向下拖动。
- 在 C4(即 col4)上对 New 进行过滤,您将获得所需的结果。
答案3
答案4
添加 C 列作为计数器*: =COUNTIF(A$2:A$528, A2)
添加 D 作为增量*=IF(A2=A1,D1+1, 1)
添加 E 进行连接*: =IF(A1=A2,E1 & ", " & B2 , B2)
添加 F 以仅保留最后一个连接:=IF(AND(C2=D2,E4<>""),E4,"")
注意添加单元格 2 并下拉(或双击右上角)以将公式应用于列中的所有单元格
复制并粘贴为另一张表中的值,按 F 降序排列,删除其余部分