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

相关推荐
傻啦嘿哟41 分钟前
Python高效实现Excel与TXT文本文件数据转换指南
开发语言·python·excel
綝~1 小时前
Excel导入MongoDB操作手册
数据库·excel
暗武逢天1 小时前
Java导出复杂Excel升级版(解决占位符遗留问题,通用工具类)
java·excel·easyexcel·模板导出·通用工具类
ohoy1 天前
EasyPoi 自定义数据处理
excel
ohoy1 天前
easypoi 自定义样式 学生-分数红绿颜色设置
excel
ranchor6661 天前
excel+pandas使用str.contains() 的典型例子
excel·pandas
Neoest1 天前
【Java 填坑日记】Excel里的“1.00“存入数据库解密后,Integer说它不认识:一次 NumberFormatException 翻车实录
java·数据库·excel
lzq6031 天前
Python自动化办公:5分钟批量处理Excel数据
python·自动化·excel
oh,huoyuyan1 天前
【实战案例】使用火语言RPA『表格数据提取』组件,批量爬取蔬菜价格+Excel 整理
爬虫·excel·rpa
缺点内向1 天前
如何在Excel文档中获取分页信息
后端·c#·.net·excel