列方向汇总
举例
有 Excel 文件 Book1.xlsx,数据如下所示:
class |
name |
Math |
English |
PE |
one |
Jack |
89 |
78 |
83 |
Tom |
90 |
60 |
99 |
|
Jerry |
76 |
88 |
62 |
|
Kate |
66 |
90 |
85 |
|
two |
Jim |
87 |
60 |
76 |
Alice |
100 |
99 |
97 |
|
Rebecca |
75 |
76 |
88 |
|
three |
Cindy |
63 |
80 |
72 |
Kitty |
82 |
50 |
74 |
|
Lucy |
40 |
100 |
63 |
现在需要从三个班的某次测试成绩,汇总出各班的人数、所有学科(包含数学、英语、体育)的总成绩:
calss |
num |
total |
one |
4 |
966 |
two |
3 |
758 |
three |
3 |
624 |
编写 SPL 脚本:
方法1:结构化数据
A |
|
1 |
=file("Book1.xlsx").xlsimport@t() |
2 |
=A1.groups@i(class;count(1):num,sum(~.array().to(3,).sum()):total) |
3 |
=file("result.xls").xlsexport@t(A2) |
A1 读取 Excel 数据
A2 按班级分组,计算每个班级的人数 num,所有学科(3 至 5 列)的总成绩 total,其中${to(3,5).("#"/~).concat("+")}拼出串:#3+#4+#5
A3 将结果 A2 导出至 result.xlsx
方法2:二维数组
A |
|
1 |
=file("Book1.xlsx").xlsimport@w(;,2:) |
2 |
=A1.groups@i(~(1):calss;count(1):num,sum(~.to(3,).sum()):total) |
3 |
=file("result.xls").xlsexport@t(A2) |
A1 读取 Excel 数据,从第二行开始读,读成一个二维数组
A2 按班级(第一列)分组,求每个班级的人数 num,所有学科(第三列往后)的总成绩 total
A3 将结果 A2 导出至 result.xlsx
英文已更新