2016-08-12 12 views
1

我有一个包含两列的CSV文件。第1列包含组ID,第2列包含项目ID。CSV,将多行转换为按另一列的值分组的逗号分隔列表

下面是一些示例数据(复制出来的excel)

- 5 154 
- 5 220 
- 5 332 
- 5 93 
- 5 142 
- 5 471 
- 5 164 
- 5 362 
- 5 447 
- 5 1697 
- 5 170 
- 6 173 
- 6 246 
- 6 890 
- 6 321 
- 6 421 
- 6 1106 
- 6 5 
- 6 253 
- 6 230 
- 6 551 
- 8 2155 
- 8 2212 
- 8 2205 
- 8 2211 
- 8 2165 
- 8 2202 
- 8 1734 
- 8 2166 
- 8 2129 

我需要重新格式化,这样我只有一个排的每个组ID和2列包含项目ID的逗号分隔的列表。

因此,它应该是这个样子

-5 154,220,332,93,142,471,164362,447,1697,170 
-6 173,246,890,321,421,1106,5,253,230,551 
-8 2155,2212,2205,2211,2165,2202,1734,2166,2129 

我很高兴地导入CSV到Excel /数字以格式化。甚至在一个临时MySQL数据库中,如果一个SELECT查询可以实现这一点。

谢谢你的帮助!

回答

0

我觉得这样的事情最好用Rreshape来解决。
但在这里,你在Excel中去:

假设

  • 项键列B
  • 组独特的键列d列

    • 组键(我想你可以手动执行此操作)

    进入E2:

    =INDEX($B:$B,SMALL(IF($A$2:$A$50=$D2,ROW($A$2:$A$50),""),COLUMN()-COLUMN($D2))) 
    

    并按下CTRL + SHIFT + ENTER将其作为数组公式输入。现在您可以将单元格E2复制到F2:P2和E3:P4。

    结果:

    enter image description here

  • +0

    您的解决方案将使其它更多的列的每一行。我需要逗号分隔的项目ID列表在B列。所以B列的值将是154,220,332,93等等。 –

    +0

    原生Excel公式无法实现(您需要VBA)。解决方法:文件 - >另存为 - > CSV。或者进入E5,输入'= D5&“,”&E4'并将E5拖到右侧。 –

    相关问题