10.7 指定次序中有重复值的排序

 

有如下数据,在列 Header1 中存储了一些索引号,但这个索引号可能有重复值,就像下图中红框所示有多个 101:

imagepng imagepng

将 data 页的 Header2,Header3 的数据填到 Target 页的 B,C 两列,其中第 1 个 101 表示 Header1 为 101 的第 1 行,第 2 个 101 则为第 2 行,第 3 个 101 找不到第 3 行,则为空行。在 B1 中计算:

A
1 =E(‘A1:A10’).derive(:key)
2 =E(‘data!A1:C9’).derive(:key)
3 =A1.group(Header1).run(~.run(key=Header1/“_”/#))
4 =A2.group(Header1).run(~.run(key=Header1/“_”/#))
5 return A2.align(A1:key,key).new(~.Header2,~.Header3)

A1 将传入数据转为二维序表并新增一列 key,用于生成要用来对齐的键值
A2 将传入数据转为二维序表并新增一列 key,用于生成要用来对齐的键值
A3 将 A1 按 Header1 分组,循环每一组,再循环组中每行,让 key 的值为 Header1 加下划线再加它在组中的序号
A4 与 A3 同理
A5 让 A1 中的 key 按照 A2 中的 key 的顺序对齐,构造新的数据集返回

imagepng


帮你早下班 - esProc 桌面版与 Excel 数据处理
10.6 按指定次序排序
10.8 打乱次序