两层分类后的行转列

 

例题描述

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子分组内各组的NameColor组成的序列,最后将这个序列用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