例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将结果粘贴过来。