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

例题描述

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中的数据。

   

上一篇:【DB宝47】企业知识分享+团队协作神器之Confluence


下一篇:Day205.阿里云OSS、讲师管理前后端【上传头像功能】、课程分类管理【环境搭建、Excel文件读取添加数据库】 -谷粒学院