Excel - 一个单元格中的数据透视表值(以逗号分隔的值)

Excel - 一个单元格中的数据透视表值(以逗号分隔的值)

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、非数据透视表的解决方案,仅使用几个公式。

  1. 首先,我使用“文本到列”功能将数据在“管道”分隔符(垂直线)处拆分为 2 列;“供应商”列和“产品”列。它们分别位于 A 列和 B 列中。(在您的帖子中,它们合并在一列中,因此我首先将它们分开。您不必这样做。)

  2. 在 C 列(我将其命名为“连接”列)中,我使用了这个公式,从单元格 C2 开始一直向下复制:=IF(A2=A1,C1&", " & B2,A2&"|"&B2)

  3. 在 D 列中,我将其命名为“SupplierChangesAtNextLine?”我使用了这个公式(从 D2 开始一直向下复制):=IF(A2=A3,"","Changed")

  4. 现在您应该能够在 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
  1. 在 col3(即 C3)中,使用公式 =IF(A2=A1,B2&","&C1,B2) 从单元格 C2 开始并将其向下拖动。
  2. 在 C4(表示第 4 列)中使用公式 =IF(A2=A3,"","changed") 从单元格 D2 开始并将其向下拖动。
  3. 在 C4(即 col4)上对 New 进行过滤,您将获得所需的结果。

答案3

最后我在这个视频中找到了针对这个请求的确切解决方案:

在 Excel 数据透视表中连接唯一文本值

我按照这些步骤操作,成功地将类似组或子组的数据透视表中的行合并/合并到 CSV 的单列中。

答案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 降序排列,删除其余部分

相关内容