将并列排名的成员拼接起来

 

1

Excel文件book1.xlsx记录学生成绩,部分数据如下图所示:

..

现在要排出学生数学成绩排名,成绩相同的姓名用逗号连接起来,结果如下图所示:

..

编写SPL脚本:


A

1

=T("E:/work/book1.xlsx")

2

=A1.group(Maths).(~.(Name).concat@c()).rvs()

3

=A2.new(#:Rank,~:Name)

4

=T("E:/work/book2.xlsx",A3)

A1   读入book1.xlsx文件数据

A2   Maths分组,循环每一组,将组内学生的姓名用逗号连接成串,最后再用rvs函数倒序排列

A3   A2构造新的数据集,行号#命名为Rank字段,A2中当前行的姓名串命名为Name字段

A4   A3保存到文件book2.xlsx

 

2

Excel文件book1.xlsx记录着一些人的4项指标评分,部分数据如下图所示:

..

现在要求从F列开始填写,规则:按照指标值从大到小的顺序(逆序),依次填入指标名,若指标值相同,则用逗号连接起来,填入同一格,如下图所示:

..

编写SPL脚本:


A

1

=clipboard().split@n("\t")

2

=A1.to(2,).(~.group@p(~).rvs())

3

=A2.(~.(A1(1)(~).concat@c()))

4

=A3.concat@n("\t")

5

=clipboard(A4)

A1   读入剪贴板字符串,并先用\n拆分后再用\t拆分,最后变成序列的序列

A2   A1的第2行开始,循环每一行。对行内序列进行分组,选项@p表示分组后取出成员在原序列中的位置编号。最后再用rvs函数倒序排列

A3   循环A2中每一行,用每一组的成员位置编号到A1中第1行取出对应的指标名用逗号连接起来

A4   A3中的序列行之间用\n连接,行内成员用\t连接成字符串

A5   A4中的字符串放进剪贴板中

先打开book1.xlsx文件,选择B2:E3区域,按Ctrl+c复制,然后再运行SPL脚本,运行结束后回到Excel,点击F2单元格,按Ctrl+v将结果粘贴过来。