EXCEL如何A列相同项将相同项的同行B列内容排成一行

如题所述

方法一:首先用“删除重复值”功能,得到不重复姓名,再使用公式获得相同姓名对应的不同值。

G1公式为=IFERROR(INDEX($B$1:$B$16,SMALL(IF($A$1:$A$16=$F1,ROW($1:$16),10^10),COLUMN(A1))),"") 数组公式,以ctrl+shift+enter结束

方法二:使用Power Query(excel2016及以上版本已经内置,2010及2013需要先下载相应安装包,2007及以前版本不可用)

方法3,使用textjoin函数之后再分列(excel2019及365支持)

F1公式为=TEXTJOIN(",",,IF($A$1:$A$17=E1,$B$1:$B$17,"")),同样是数组公式

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-17

看着楼上几位使用函数公式解答,非常钦佩。在下想不出上面函数公式,只想到使用VBA程序代码来处理。

1、VBA程序代码如下截图:


2、程序执行前后截图如下:


【注】引用自百度经验《Excel表格提取数据到同一行上面》

第2个回答  2019-05-02

c列加个辅助列,c1=if(match(a1,a:a,0)=row(),row()*1000+countif(a1:a100,a1),"")下拉,然后d1=IF(ROW(A1)>COUNT($C:$C),"",IF(COLUMN(A1)>MOD(SMALL($C:$C,ROW(A1)),1000)+1,"",INDEX($A:$C,INT(SMALL($C:$C,ROW(A1))/1000)+(COLUMN(A1)>1)*MOD(COLUMN(A1)-2,100),MIN(COLUMN(A1),2))))右拉(多拉几个位置,预留余地),再下拉

第3个回答  2019-05-02
E1=INDEX($B:$B,SMALL(IF($A$1:$A$100=$D1,ROW($A$1:$A$100),65536),COLUMN(A1)))&""
数组公式,同时按CTRL SHIFT 回车键,出现结果
然后公式右拉,下拉
第4个回答  2019-05-02
C1 公式:
=if(countifs(A:A,A1,B:B,B1)-1,"重复","")
或者:
=if(countifs(A$1:A1,A1,B$1:B1,B1)-1,"重复","")追问

没有看懂,请详细说一下,因为有好几千人的名字,我输进去都是显示重复

相似回答