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