如何利用有规则的字串将一行扩展成多行
某生产日报表如下:
现根据日报统计,目标结果如下:
难点分析:
本例中要将“不良分类(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 运行脚本,可以看到目标结果表生成了。