使用相邻数据作为分组条件

举例

有 Excel 文件 Book1.xlsx,数据如下所示:

051000 55.74
055000 61.47


056000 44.53


062000 142.11


081000 142.11
088000 44.53


092000 52.89


095100 118.37
096500 354.8


096700 6.49
099100 44.53


102600 162.74

需要按第一列分组,对第二列的数值求和。分组条件为: 如果本条不为空,且上一条为空,且上上条和本条的前两位数字不同,则分新一组。计算结果如下:

051000 161.74
062000 142.11
081000 186.64
092000 577.08
102600 162.74

编写 SPL 脚本:


A
1 =file("Book1.xlsx").xlsimport()
2 =A1.group@i(if(#1 && #1[-1]==null &&   left(#1,2)!=left(#1[-2],2)))
3 =A2.new(#1,round(~.sum(#2),2))
4 =file("result.xlsx").xlsexport@(A3)

A1   读取 excel 文件内容

A2   按条件(本条不为空,且上一条为空,且上上条和本条的前两位数字不同)分组

A3  计算各组内第二列数值的和,保留两位小数,#1 代表每组第一列的第一个值

A4  结果导出至 result.xlsx