Excel-一个单元格中的枢轴值(以逗号分隔的值)


11

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解决方案将是惊人的。


您需要一个SQL查询来轻松做到这一点。您可以导出到某些描述的数据库吗?
Rhys Gibson

Answers:


23

这是一个仅使用几个公式的非VBA,非枢轴表解决方案。

  1. 首先,我使用“文本到列”将“管道”定界符(垂直线)处的数据分为两列;“供应商”列和“产品”列。它们分别在A列和B列中。(在您的帖子中似乎将它们合并为一列,所以我首先将它们分开。您不必这样做。)

  2. 在我称为“串联”列的C列中,我使用此公式,从单元格C2一直向下复制:= IF(A2 = A1,C1&“,”&B2,A2&“ |”&B2)

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

  4. 现在,您应该只能在D列上过滤“已更改”的值。

打得好!


1
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),您将获得理想的结果。

0

将C列添加为计数器*:= COUNTIF(A $ 2:A $ 528,A2)
将D添加为增量* = IF(A2 = A1,D1 + 1,1)
将E添加到串联*:= IF(A1 = A2,E1 &“,”&B2,B2)
添加F以仅保留最后一个concat := IF(AND(C2 = D2,E4 <>“”),E4,“”)
注意
在单元格2上添加并下拉(或双击)在右上角)将公式应用于列中的所有单元格

将值复制并粘贴到另一张工作表中,按F降序排列,删除其余部分


太多的事情要做... F106dart的解决方案更加优雅。
ihightower
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.