如何自动对列方向的数据做分组排序

 

例题描述

有课程起始日期表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