excel 如何将A列相同的数据所对应的B列多行数据合并至一行

表格样式如下:
ID PEOPLE
001 张一
001 刘二
001 王三
002 王四
002 王五
003 赵六

如何可以实现:
001 张一刘二王三
002 王四王五
003 赵六

数据量大,各ID的个数没有定值。

数据在A列和B列

在C1输入公式

=INDEX(A:A,SMALL(IF(MATCH($A$1:$A$2000&"",$A$1:$A$2000&"",0)=ROW($A$1:$A$2000),ROW($A$1:$A$2000),4^8),ROW(A1)))

数组公式,按CTRL+SHIFT+回车三键确定输入,鼠标移到单元格右下角,当出现一个黑色小十字时,同时按住鼠标左键往下拖动

然后在D1输入公式

=INDEX($B:$B,SMALL(IF($A$1:$A$2000=$C1,ROW($A$1:$A$2000),4^8),COLUMN(A1)))

数组公式,按CTRL+SHIFT+回车三键确定输入,鼠标移到单元格右下角,当出现一个黑色小十字时,同时按住鼠标左键往右拖动,再往下拖动

就会得出你想要的效果
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-31
第一行是标题

C2:{=IF(MAX(IF($A2=$A$1:$A1,ROW($A$1:$A1)))=0,"",INDEX(C:C,MAX(IF($A2=$A$1:$A1,ROW($A$1:$A1)))))&$B2}
下拉

E1=ID
E2:{=OFFSET($A$1,MATCH(0,MMULT(--TRANSPOSE(TRANSPOSE($A$1:$A$1000)=E$1:E1),ROW(INDIRECT("1:"&ROW()-1))/ROW(INDIRECT("1:"&ROW()-1))),0)-1,0,1,1)}
F2:{=INDEX(C:C,MAX(IF($E2=$A$1:$A$1000,ROW($A$1:$A$1:$A$1000))))}
下拉

都是数组公式,不输{},输完公式不按回车,按CTRL+SHIFT+回车本回答被提问者采纳
第2个回答  2010-03-31
=INDEX($B:$B,SMALL(IF($A$2:$A$7=$A2,ROW($B$2:$B$7)),1))&INDEX($B:$B,SMALL(IF($A$2:$A$7=$A2,ROW($B$2:$B$7)),2))&INDEX($B:$B,SMALL(IF($A$2:$A$7=$A2,ROW($B$2:$B$7)),3))&INDEX($B:$B,SMALL(IF($A$2:$A$7=$A2,ROW($B$2:$B$7)),4))
按ctrl+shift+enter结束
公式含义:
INDEX($B:$B,SMALL(IF($A$2:$A$7=$A2,ROW($B$2:$B$7)),1))是取出该数组中重名“001”中对应B列中第一个数
INDEX($B:$B,SMALL(IF($A$2:$A$7=$A2,ROW($B$2:$B$7)),2))是取出该数组中重名“001”中对应B列中第二个数
以此类推
然后用"&"将它们连在一起
第3个回答  2010-03-31
C2=INDEX($A$2:$A$1000,MATCH(0,COUNTIF($C$1:C1,$A$2:$A$1000),))&"向下填充公式
D2=INDEX($B$2:$B$1000,SMALL(IF(COUNTIF($C2,$A$2:$A$1000),ROW($A$2:$A$1000),4^8),COLUMN(A1))-1)&""向右再向下填充公式
以上都要CTRL+SHIFT+ENTER输入公式
相似回答