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

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 09:30:08       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 09:30:08       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 09:30:08       82 阅读
  4. Python语言-面向对象

    2024-05-14 09:30:08       91 阅读

热门阅读

  1. 【无标题】

    2024-05-14 09:30:08       38 阅读
  2. IDEA里的项目字节码版本和语言级别的区别

    2024-05-14 09:30:08       35 阅读
  3. ASP.NET Core中实现文件上传下载实时进度条功能

    2024-05-14 09:30:08       37 阅读
  4. 手机照片保存地址

    2024-05-14 09:30:08       34 阅读
  5. Elasticsearch做到像mysql这样的表连接Parent-Child实现

    2024-05-14 09:30:08       32 阅读
  6. 使用 Docker 轻松部署 Spring Boot 应用

    2024-05-14 09:30:08       30 阅读
  7. 云端安全新纪元:云WAF的崛起

    2024-05-14 09:30:08       31 阅读
  8. 当它还是幼生期的时候,及早离开它!

    2024-05-14 09:30:08       32 阅读
  9. Kotlin反射:深入探索与多场景应用

    2024-05-14 09:30:08       43 阅读
  10. 在面试中,我常问的c++问题

    2024-05-14 09:30:08       25 阅读