两个工作表关联后进行累减

 

例题描述

Excel文件kucun.xlsx中有下图所示的数据:

..

..

总库存是在仓库里面盘点出来的所有库存,并按地点和库存地点表示存货所在位置,其中委托加工库存是接收的外部公司加工的存货,不属于公司所有。现在要对按总库存表格式,减掉已知的委托加工库存数量,显示属于本公司库存的位置,减去规则如下图所示:

..

最后实际库存结果如下图所示:

..

此题涉及数据表关联(join连接)、分组、组内迭代等知识。

 

实现步骤

1、  编写脚本:


A

1

=file("E:/kucun/kucun.xlsx").xlsimport@t(;"总库存")

2

=file("E:/kucun/kucun.xlsx").xlsimport@t(;"委托加工库存").keys(货号)

3

=A1.join(商品编码,A2,数量:委托数量)

4

=A3.group(商品编码).(~.iterate((a=min(数量,~~),数量-=a,~~-a),委托数量,~~==0))

5

=A3.select(数量>0).new(商品编码,地点,库存地点,数量,小类,大类)

6

=file("E:/kucun/kucun.xlsx").xlsexport@ta(A5;"实际库存")

A1   读取kucun.xlsx文件中的总库存数据

A2   读取kucun.xlsx文件中的委托加工库存数据,并指定货号为主键

A3   A1按照商品编码与A2的主键货号进行join连接,并连接A2中的数量列重命名为委托数量

A4   A3按商品编码进行分组后循环各组,在组内进行iterate循环迭代处理,循环中~~代表上次迭代运行的结果,用委托数量作为~~的初始值。取当前记录的数量与~~的最小值赋给变量a,当前记录的数量减去a,用~~-a作为本次迭代的结果;当迭代结果~~0时,结束迭代。

A5   选出迭代处理后的A3中数量>0的记录,并取出商品编码,地点,库存地点,数量,小类,大类几列构成新的数据集

A6   A5导出到kucun.xlsx中的实际库存Sheet,选项@t表示首行输出列标题,a表示追加导出Sheet

 

2、  运行程序,结束后再打开kucun.xlsx就可以看到实际库存Sheet中的数据。

   

问答搜集  http://club.excelhome.net/thread-1570038-1-1.html

 

 

【附件】 kucun.zip