在excel中合并具有几个相同列的行

时间:2011-08-26 19:33:35

标签: excel

我有一张excel表,其数据类似于以下

Reg_id     Name     Product_Owned     Product_model
----------------------------------------------------
34        Tom       Laptop            Dell Studio15 
34        Tom       Mobile            HTC Sense 
34        Tom       Camera            Canon xyz 
67        Steven    Laptop            Apple Mac Book 
67        Steven    Phone             Apple iPhone4 
88        Sunny     Mobile            Samsung i9000 
88        Sunny     Camera            Sony xyz

我在Product_Owned列中只有三个值 - Laptop, Camera & Mobile.我希望他们的信息作为单独的列存储在同一个人的单行中。

我想以这种格式制作:

Reg_id     Name     Laptop           Mobile           Camera
--------------------------------------------------------------
34         Tom      Dell Studio15    HTC Sense       Canon xyz
67         Steven   Apple Mac Book   Apple iPhone4
88         Sunny                     Samsung i9000   Sony xyz

无法手动执行,因为有大约50000行。请提出一些建议..

1 个答案:

答案 0 :(得分:3)

在相邻表格中创建Reg_IDName的唯一列表,类似于您在第二个表格中设置的列表。

LaptopMobileCamera创建标题,然后在下面,在H2中输入以下公式作为数组公式,假设第一个表位于单元格中A1:D8和F1中新创建的:J4:

=INDEX($D$2:$D$8,MATCH($F2,$A$2:$A$8,0)+MATCH(H$1,OFFSET($C$2,MATCH($F2,$A$2:$A$8,0)-1,0,COUNTIF($A$2:$A$8,$F2)),0)-1)

这将返回相应Reg_IDProduct_Owned的值,以及Product_Owned不存在时的'#NA'。如果您想要返回空白而不是'#NA',则可以添加ISNA()公式:

=IF(ISNA(INDEX($D$2:$D$8,MATCH($F2,$A$2:$A$8,0)+MATCH(H$1,OFFSET($C$2,MATCH($F2,$A$2:$A$8,0)-1,0,COUNTIF($A$2:$A$8,$F2)),0)-1)),"",INDEX($D$2:$D$8,MATCH($F2,$A$2:$A$8,0)+MATCH(H$1,OFFSET($C$2,MATCH($F2,$A$2:$A$8,0)-1,0,COUNTIF($A$2:$A$8,$F2)),0)-1))