如何将每个分类下除分类列外的每一列转换为一行
例题描述和简单分析
有 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
英文版