Excel 将非分组列的数据移到同一行

例题描述和简单分析

有 Excel 数据如下所示:

Account Name

Join Date

Other Columns

Package

Account 1

2001/1/19

Data

Main Package

Account 1

2001/1/19

Data

Bolt On

Account 1

2001/1/19

Data

Add on

Account 2

2001/1/18

Data

Main Package

Account 3

2001/1/17

Data

Main Package

Account 3

2001/1/17

Data

Add on

Account 4

2001/1/19

Data

Main Package

需要按 ID 分组汇总其余列,结果如下:

Account Name

Join Date

Other Columns

Package

Extra Item

Extra Item

Account 1

2001-01-19

Data

Main Package

Bolt On

Add on

Account 2

2001-01-18

Data

Main Package



Account 3

2001-01-17

Data

Main Package

Add on


Account 4

2001/1/19

Data

Main Package



解法及简要说明

使用插件 SPL XLL

在空白单元格填写公式:

=spl("=((a=?.m(2:).group(~(1)).(if(~.len()>1,~=~.m(1)|~.m(2:).(~(4)),~=~.m(1))),b=?.m(1).pad(""Extra Item"",a.max(~.len())),[b]|a))",A1:D8)

如图:

..

返回结果:

..

简要说明:

a: 取第二行开始的数据部分,按第一列(Account Name)分组,若组内数据行数大于 1,则把从第二行开始的第四列(Package)依次拼接到第一行数据的尾部,否则取组内的第一条数据。

b: 用串 "Extra Item" 将第一行(表头)补足到和数据部分的最大列数一样长。

最后将表头b与数据a合并后的结果返回。

问答搜集

https://stackoverflow.com/questions/63641240/move-duplicate-rows-unique-value-to-new-column