怎么对 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+批次内相对序号
英文版