在每个分类里进行跨行计算

例题描述

在 Excel 中有一组按地区,产品以及周分类的粮食作物进口数量表,部分数据截图如下:

..

现在需要计算相同地区下同类产品的比上周数量增量,并将计算的结果放入 E 列,如下图,相同颜色为相应跨行计算的 Quantity 增量示意图:

..

 

实现步骤

1.   打开集算器,新建文件。

2.      编写处理代码,代码以及含义如下:


A

B

1

=file("data.xlsx").xlsimport@bt()


2

=A1.rename(#5:Volume)


3

=A2.derive(#:ID)


4

=A3.group(Product,Region)


5

=A4.run(~.(Volume=if(#==1,null,Quantity-Quantity[-1])))


6

=A5.conj().sort(ID).(Volume)


A1   打开 data 文件,并导入所有数据为序表,其中选项 b 表示去掉多余的空行。

A2   由于需要对 Volume 进行赋值,而原始列名又长又包含空格,不是一个有效的字段名,重命名以方便计算和易读。

A3   后面的分组会打乱数据的顺序,添加一个序号字段用于计算完成后恢复原序。

A4   按照产品和地区分组。

A5   对每一组数据分别计算数量的增值,并赋值给 Volume 列。

A6   计算完成后,再将各组数据合并为大表,且按 ID 恢复初始次序,然后取出 Volume 列。

 

3.      运行代码后,将 A6 格的内容复制,并粘贴到 Excel 的 E2。


问答搜集

https://stackoverflow.com/questions/63810924/how-can-i-automate-these-formulas

【附件】 data.zip