如何将每个分类下除分类列外的每一列转换为一行

例题描述和简单分析

有 Excel 文件 book1.xlsx,数据如下所示:

现在需要将每个分类 (A 列) 下除分类列外的每一列(B、C 列)转换为一行,结果如下:

解法及简要说明

在集算器中编写脚本 p1.dfx,如下所示:


A

1

=clipboard().import()

2

=A1.group@u(#1)

3

=A2.([~.#1|~.(#2),~.#1|~.(#3)]).conj()

4

=A3.concat@n("\t")

简要说明:

A1   从剪贴板里读数据

A2   按第一列分组

A3  每组内,取第一列的第一个值与第二列(B 列)合并,取第一列的第一个值与第三列(C 列)合并,两者组成序列,再将每组合并,成为序列的序列

A4  将 A3 转为字符串,列间用制表符,行间用回车符

执行程序后,在集算器中选中 A4 单元格,再点击右侧对应的“copy data”按钮。在 Excel 点击 A10 单元格,按 Ctrl+V 就可以把计算结果粘贴过来。

问答搜集

https://stackoverflow.com/questions/63782094/conditionally-transpose-excel-data