某生产日报表如下:

现根据日报统计,目标结果如下:

难点分析:
本例中要将“不良分类(AC 列)”的数据拆分到多行多列中,如日报第一条数据:

拆分后要形成 3 条记录,其中前两条:

代码表为:

第三条记录形成规则为日报中 W 列(如下图)不为空时新增一条记录

其他还有若干要求,具体查看前面截图中的“统计要求”。
使用集算器实现步骤:
1. 安装运行集算器
可去润乾官网下载职场版,同时下载一个免费授权就够了,首次运行时会提示加载。
2. 编写脚本

脚本列出来看下:
| A | B | C | D | |
| 1 | =file("44/ 统计表实现.xls").xlsimport@t(;,2:).select(工单号码) | =file("44/ 统计表实现.xls").xlsimport@t(;"不良代码",2:) | =create(行号, 生产订单, 作业号, 良品, 废品, 废品原因, 作业类型 1, 作业时间 2, 单位 2, 作业时间 3, 单位 3, 确认内文) | |
| 2 | for A1 | if a=A2. 不良分类 | =a.split() | =C2.group@o(isdigit (~)).(~.concat()) |
| 3 | for D2.group((#-1)\2) | =B1.select@1(原因说明 ==C3(1)). 代码 | ||
| 4 | >C1.insert(0,null,A2. 工单号码,null,null,C3(2),if(D3,D3,C3(1)),null,if(#C3==1,A2. 喷油机器工时),null,if(A2. 是否为待返工单!="是" && #C3==1,A2. 生产工时),null,null) | |||
| 5 | if A2._23 | >C1.insert(0,null,A2. 工单号码,null,null,null,null,null,null,null,null,null,A2. 来料编号 +"报废,"+A2._23) | ||
| 6 | =file("44 结果表.xls").xlsexport@t(C1) |
A1 和 A2 分别读入日报和不良代码数据,A3 创建空结果表,下面计算的结果会插入 A3 中
A2 开始循环日报数据,当不良分类不为空时(B2),将其拆分成单个字符(C2)

再将其组合成汉字和数字的组合(D2),如下

C3 先将上面的结果拼成两两一组的形式,并循环准备生成新纪录
D3 表达式根据代码表查找对应不良分类代码
D4 向结果表中插入数据
B5 和 C5 处理另外一个条件(W 列不为空时),生成新记录
A6 将结果表写出到 Excel 中
3. 按 F9 运行脚本,可以看到目标结果表生成了。

本文介绍如何使用集算器解析生产日报表,通过拆分不良分类并结合代码表,生成满足特定规则的新记录。难点在于处理不良分类的拆分和W列非空条件的判断。最终脚本展示了数据转换的完整过程,从原始报表到目标结果的生成。
686

被折叠的 条评论
为什么被折叠?



