怎么对 xls 的每 N 行做一次汇总

data.xls部分数据如下:


A B
1 01.01.2017 00:15 1,830,868
2 01.01.2017 00:30 1,832,884
3 01.01.2017 00:45 1,905,648
4 01.01.2017 01:00 1,957,952
5 01.01.2017 01:15 1,968,672
6 01.01.2017 01:30 1,868,292
7 01.01.2017 01:45 1,904,240
8 01.01.2017 02:00 1,931,128
9 01.01.2017 02:15 1,888,136
10 01.01.2017 02:30 2,069,428
11 01.01.2017 02:45 1,863,588
12 01.01.2017 03:00 1,864,380
13 01.01.2017 03:15 2,106,224
14 01.01.2017 03:30 2,416,920

计算目标:每4行做一次汇总,算出分组序号和每组的和,部分结果如下:


A B
1 1 7,527,352
2 2 7,672,332
3 3 7,685,532
4 4 9,501,864

这里的难点在于,要对每N行做一次汇总,而不是常见的按某列做分组再进行汇总。

实现步骤:

1.       运行集算器(可以到润乾官网下载,用职场版,首次运行时会提示加载授权,下载个免费的就够了)

2.  编写脚本并执行


A
1 =file("D:/data.xls").xlsimport()
2 =A1.groups((#-1)\4+1;sum(#2))
3 =file("D:/new.xls").xlsexport(A2)

      脚本中函数 groups 用来实现分组汇总,# 为行号,#2 为第 2 列。(#-1)\4表示行号减1再除以4所得的商,分组条件即商相等的记录。

如果文件较大,内存放不下,则应使用如下脚本:


A B C
1 =file("D:\data.xls").xlsimport@c()
2 for A1,4*1000 =A2.groups((#-1)\4+1;sum(_2)) /每次处理一批(4000条)
3
=B2.run(#1=(#A2-1)*1000+#1) /修改序号
4
=file("D:\new.xls").xlsexport@a(B3) /追加到文件

注意,序号=批次号*1000+批次内相对序号