14.9 横向扩展出多列

 

如下数据中有序存放着多种部件及其金属子部件,当 Level=2 时,表示该行为部件(汇总行),当 Level=3 时,表示该行为子部件。Material 列和 Proportion 列分别存放子部件的金属名称和占比。如下所示:

imagepng

在部件(汇总行)的右侧拼上每种金属的占比,如下所示:

imagepng

在 E1 中写入代码:

A
1 =E(‘A1:D12’)
2 =A1.id(Material).select(~)
3 =A1.derive(${A2.concat@c()})
4 =A3.group@i(Level==2)
5 =A4.run(~.to(2,).groups(Material;sum(Proportion):value).run(A4.~(1).field(Material,value)))
6 =A3.new(${A2.concat@c()})

A2 选出不重复且不为空的 Material 种类
A3 为 A2 中选出的每种 Material 各追加一列
A4 对 A3 进行分组,当 Level 为 2 时就分一个新组。选项 @i 表示条件满足时就分一个新组
A5 循环 A4 的每一组,用第 2 行到最后一行按 Material 分组统计各材料占比之和命名为 value 列,再循环统计出的每一组,令 A4 当前组的第 1 行的 Material 列的值为 value
A6 从 A3 中的结果选出需要的列返回


帮你早下班 - esProc 桌面版与 Excel 数据处理
14.8 数据变化时插入空行
14.10 横向扩展出多组 N 列