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合并后的结果返回。

相关推荐
Oll Correct1 天前
Excel基础操作(五)
笔记·excel
一晌小贪欢1 天前
Python 操作 Excel 高阶技巧:用 openpyxl 玩转循环与 Decimal 精度控制
开发语言·python·excel·openpyxl·python办公·python读取excel
day day day ...1 天前
easyExcel和poi分别处理不同标准的excel
java·服务器·excel
骆驼爱记录1 天前
Word侧边页码设置全攻略
前端·自动化·word·excel·wps·新人首发
开开心心_Every2 天前
发票批量打印工具支持双面预览页面方向设置
游戏·微信·pdf·华为云·excel·语音识别·googlecloud
xinlianluohan2 天前
excel筛选背景颜色的值&拼接单元格&判断单元格是否含有中文
excel
骆驼爱记录2 天前
Word通配符技巧:高效文档处理指南
开发语言·c#·自动化·word·excel·wps·新人首发
AI刀刀2 天前
豆包怎么生成excel
ai·excel·豆包·deepseek·ds随心转
骆驼爱记录2 天前
Word表格题注自动设置全攻略
开发语言·c#·自动化·word·excel·wps·新人首发
天荒地老笑话么2 天前
Vim核心快捷键与运维实战指南
运维·vim·excel