如何将EXCEL表格编号相同的多行合并到同一行?

如图1,A列为编号,B列为姓名 如何实现如图2 E ,F, G列那样显示?

提供一种powerquery的解决思路:

let

源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],

更改的类型 = Table.TransformColumnTypes(源,{{"列1", Int64.Type}, {"列2", type text}}),

分组的行 = Table.Group(更改的类型, {"列1"}, {{"data", each _, type table [列1=number, 列2=text]}}),

自定义1 = Table.TransformColumns(分组的行,{"data",each   Text.Combine(_[列2],",")}),

按分隔符拆分列 = Table.SplitColumn(自定义1, "data", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"data.1", "data.2"}),

更改的类型1 = Table.TransformColumnTypes(按分隔符拆分列,{{"data.1", type text}, {"data.2", type text}})

in

更改的类型1

用法:

1.确保原始数据在Sheet1且被转换成了table格式(如下图所示,我的已经是表格,所以显示为灰色)

2.在【数据】选项卡上新建一个空白查询,如下图所示

把前面的代码复制粘贴进去,然后点击【全部刷新】,数据就自动加载到sheet2上了。

3.如果只操作一次且数据不多,建议用前面大神提供的数组公式,这样更快

4.如果需要经常这么操作,或者数据量达到几十万上百万乃至更多的级别,那么建议用上面的步骤建立一个powerquery模板,以后就只需要覆盖sheet1的数据然后刷新即可。甚至可以将数据源改造为来自于文件夹的文件,这样以后重复操作就只需要把原始文件丢进那个文件夹,然后打开模板文件刷新就得到最新结果了。

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

    第一步,删除重复值:

  2. 第二步,公式筛选数据:

=INDEX($B:$B,SMALL(IF($A:$A=$E1,ROW($A:$A),4^8),COLUMN(A$1)))&""

数组公式,按ctrl+shift+enter产生花括号,下拉右拉填充。

本回答被提问者采纳
第2个回答  2019-11-10

先将A列复制到E列

选择E列>功能区>数据>删除重复项>确定

这样E列只留下唯一值

F1输入

=INDEX($B:$B,SMALL(IF($A$1:$A$1000=$E1,ROW($1:$1000),4^8),COLUMN(A1)))&""

数组公式,先按住CTRL+SHIFT,最后回车,使得编辑栏公式两端出现花括号{ }

公式下拉再右拉到无数据

相似回答