如何利用有规则的字串将一行扩展成多行

某生产日报表如下:

..

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

..

难点分析:

本例中要将“不良分类(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 运行脚本,可以看到目标结果表生成了。

..

数据与例子.zip