EXCEL判断第一列如果相同,则合并第二列中的值到一个单元格,中间用逗号隔开

怎么自动实现如下的合并呢?
原始文件如下:
1020001401 C1
1020002501 C2
1020002501 C3
1020017001 EC1
1030037701 R1
1030037701 R2
1110001901 X1
合并后的结果:
1020001401 C1
1020002501 C2,C3
1020017001 EC1
1030037701 R1,R2
1110001901 X1
补充说明,举例中每行最多只是2个,但是实际中可能是几百个,不一定。
悬赏值不多,但是已经是我所有积蓄了,求大侠帮忙。

假定原数据在A、B两列

C1

=IF(COUNTIF(A$1:A1,A1)>1,"",A1)   下拉填充

D1

=IF(COUNTIF(A$1:A1,A1)>1,"",SUBSTITUTE(SUBSTITUTE(PHONETIC(OFFSET(A1,,,COUNTIF(A:A,A1),2)),A1,","),",","",1))   下拉填充

追问

逗号自己添加太费时间,不够自动化。麻烦再帮忙想想,谢谢!

追答

你问错人了!我给的公式逗号是自动添加的!

追问

是问错了。我自己试了一下,逗号还是没有自动加上去。后来发现,必须把第一列改成文本才行。非常感谢您的回答,已经解决了。

追答

PHONETIC函数要求必须是文本

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-21
新工作表A2以下公式,然后下拉。
a2=LOOKUP(1,0/NOT((COUNTIF($A$1:A1,sheet1!$A$2:$A$1000))+ISBLANK(sheet1!$A$2:$A$1000)),sheet1!$A$2:$A$1000) 下拉生成原表A列不重复项
新工作C2 数组公式,三键输入
c2=INDEX(sheet1!$B:$B,(SMALL((sheet1!$A$1:$A$1000<>$A2)/1%%+ROW($1:$1000),COLUMN(A$1))))&""
上面公式,右拉出现A列所有配匹项,下拉完成所有新工作表A列的匹配值。
最后你的A列完成,而对应CDEF列就是你的想要的B列的值,你需要做的,就是将BCD合并为一列就可以了。最后B2输入公式后下拉,
b2=CONCATENATE(b2,B2,C2,d2,e2,f3,g2,h2)
因为EXCEL目前没有数组合并为一个值的公式,所以以下行不通。
=合并( INDEX(sheet1!$B:$B,(SMALL((sheet1!$A$1:$A$1000<>$A2)/1%%+ROW($1:$1000),COLUMN(A$1:$H1))))&"")
第2个回答  2014-05-21
建议先对左边进行排序,然后把一样的用CONCATENATE来合并右边的单元格,但逗号要自己输入。
第3个回答  2020-08-06

第一步:C2输入:=IF(A2=A3,"",A2)    

第二步:D2输入:=B2    

第三步:C3输入:=IF(A3=A4,"",A3)    

第四步:D3输入:=IF(A3=A2,D2&","&B3,B3)    

第五步:双击快速填充    

第六步:筛选C列中非空白项    

如果要看动图的话你可以看一下这个链接。

网页链接

第4个回答  2018-03-01
这个答案的前提是A列是排好序的,有没有A列乱序时的做法?
相似回答