两层分类后的行转列
例题描述
有Excel文件book1.xlsx中有下图所示的数据,同Name的物品可能有多种颜色。
现在想要把数据列出下图的形式,每种Type一行,其后依次列出每种Name及其Color。
此题难点是两层分组后,在同一行上列出两层分组内所有记录的信息。
实现步骤
1、 编写脚本:
A |
|
1 |
=clipboard().import@t() |
2 |
=A1.group(Type).(~.group(Name)) |
3 |
=A2.((~.Type|~.(Name|~.(Color))).conj@r()) |
4 |
=clipboard(A3.(~.concat("\t")).concat("\n")) |
A1 从剪贴板里读取数据,选项@t表示首行是列标题
A2 先按Type分组后,组内再按Name分组
A3 循环Type各组,先取Type,再并上其Name子分组内各组的Name和Color组成的序列,最后将这个序列用conj进行和列,选项@r表示递归计算到所有成员不再是序列为止
A4 把A3中各Type组内部数据用\t连接、组之间用\n连接成字符串后放进剪贴板
2、 到Excel文件里选择数据A1:C6,然后按Ctrl+C复制到剪贴板。
回到集算器,按F9运行程序,运行结束后再回到Excel文件,点击E1,按Ctrl+V就可以把计算结果粘贴过来。
问答搜集 https://stackoverflow.com/questions/63992575/referencing-data-without-duplicate-values
【附件】 group2cols.zip
英文版