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