excel如何讲一列重复内容后面数据合并

例如:

变成

假设上图为Sheet1,下图为Sheet2

在SHEET2的A1中输入或复制粘贴下列公式=INDEX(Sheet1!B:B,SMALL(IF(MATCH(Sheet1!$B$1:$B$10,Sheet1!$B$1:$B$10,)=ROW($1:$10),ROW($1:$10),4^8),ROW(A1)))&""

按三键CTRL+SHIFT+ENTER结束公式输入

下拉填充到A10


在SHEET2的B2中输入或复制粘贴下列公式=INDEX(Sheet1!$C:$C,SMALL(IF(Sheet1!$B$1:$B$10=Sheet2!$A2,ROW($1:$10),4^8),COLUMN(A2)))&""

按三键CTRL+SHIFT+ENTER结束公式输入

下拉填充,右拉填充

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-07
如果上图为Sheet1,下图为Sheet2,那么在Sheet2的B1单元格输入以下数组公式,按Ctrl+Shift+Enter组合键结束,然后向右向下填充公式
=INDEX(Sheet1!$C:$C,SMALL(IF(Sheet1!$B$2:$B$10=$A1,ROW($2:$10),4^8),COLUMN(A1)))&""追问

把第一副图数据怎么变成第二幅图呢?

追答

详见附图同表举例

追问

谢谢已经ok

第2个回答  2015-10-07
假设上图在SHEET1,下图为SHEET2,在下图的A2用公式:
=IFERROR(INDEX(Sheet1!B$2:B$100,SMALL(IF(MATCH(Sheet1!B$2:B$100&"",Sheet1!B$2:B$100&"",0)=ROW($1:$99),ROW($1:$99),9^9),ROW(A1)))&"","")
数组公式,按CTRL+SHIFT+回车,下拉;

B2公式:
=IFERROR(INDEX(Sheet1!$C$2:$C$100,SMALL(IF(Sheet1!$B$2:$B$100=$A2,ROW($1:$99),9^9),COLUMN(A1))),"")
数组公式,按CTRL+SHIFT+回车,右拉,下拉。
第3个回答  2015-10-07
在E1中输入
=INDEX($B:$B,SMALL(IF(MATCH(B$2:B$10&"",B$2:B$10&"",)+1=ROW($2:$10)*(B$2:B$10<>""),ROW($2:$10),65536),ROW(A1)))&""
按【组合键】确认后下拉填充。
在F1中输入
=INDEX($C:$C,SMALL(IF($B$2:$B$10=$E2,ROW($2:$10),4^8),COLUMN(A1)))
按【组合键】确认后右拖、下拉填充。追问

F1:公式用不了,E1公式可以用 麻烦看看

追答

第二个公式有误,应为

=INDEX($C:$C,SMALL(IF($B$2:$B$10=$E1,ROW($2:$10),4^8),COLUMN(A1)))

第4个回答  2015-10-07
这种感觉上是编写一段VBA代码来穷举这个区域的内容,然后重写在另一个SHEET表上.追问

怎么编写?求解

追答

这个代码比较长.你可以这样进入编写状态.再写代码.或者录制新宏.
[菜单栏][工具][宏]
进入到这里后有多种选择[录制新宏] 这样也可以达到,你就按你想的去操作.可以编写代码重组数据,也可以直接操作.
[VISUAL BASIC]如果你选择这一项.就进入了VBA的代码编写区域.在这里可以编写代码来实现这个功能.
原理就是上面说的,穷举你刚才说的这个表格,比如说 穷举 B列的数据.获取 [张三]这个姓名,然后是 将这个[张三]右侧的数据获取 比如说你刚才这一段数据是C2 C3,这样将这二个数据甚至更多的数据 放在你存放新排列的SHEET表上.进行重新排列.只要获取了数据,那你想如何排列都是可以的.

相似回答