如何自动对列方向的数据做分组排序
例题描述
有课程起始日期表book1.xlsx,数据如下图所示:
现在需要对课程的开始日期排序,最后列出各课程的最近一次起始日期,即上图中的黄色格数据,目标表格如下图所示:
数据表与目标表都与常见的行记录表相反,它是每列为一条记录。
实现步骤
1、 编写脚本:
A |
|
1 |
=file("E:/colsort/book1.xlsx").xlsimport@w() |
2 |
=transpose(A1) |
3 |
=create(${A2(1).concat(",")}).record(A2.delete(1).conj()) |
4 |
=A3.group(Courses).(~.maxp(date(Date,"dd/MM/yyyy"))) |
5 |
=A4.(~.array()).insert(1,[A4.fname()]) |
6 |
=transpose(A5) |
7 |
=file("E:/colsort/book2.xlsx").xlsexport@w(A6) |
A1 读入book1.xlsx文件数据,选项@w表示将数据读成序列的序列,如下图所示
A2 把A1的序列进行行列互换,结果如下图所示
A3 用A2中的第1个成员为列名构造序表,其它成员为记录追加到序表中
A4 A3中的数据按Courses分组后,取出各组 Date 最大的记录
A5 用A4的各行数据组成序列,并把列名插入到序列开头,结果如下图所示
A6 把A5的序列进行行列转换
A7 将结果保存book2.xlsx,选项@w表示要输出的数据是序列的序列
2、 按F9运行程序,运行结束后打开book2.xlsx可以看到生成的目标表格。
【附件】 colsort.zip
英文版