打乱次序

举例

有 Excel 文件 Book1.xlsx,数据如下所示:

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20

需要将区域内的数据打乱次序(整片、行内、列内)

编写 SPL 脚本:


A
1 =file("Book1.xlsx").xlsimport@w()
2 /整片打乱次序
3 =A1.conj().sort(rand()).group(#%5)
4 =file("total.xlsx").xlsexport@w(A3)
5 /行内打乱次序
6 =A1.(~.sort(rand()))
7 =file("row.xlsx").xlsexport@w(A6)
8 /列内打乱次序
9 =transpose(A1).(~.sort(rand()))
10 =transpose(A9)
11 =file("col.xlsx").xlsexport@w(A10)

A1   读取 excel 文件内容,读成序列的序列

A2   注释

A3  将序列的序列合并为一个序列,打乱次序后,再按原序列的序列将新序列分组

A4  整片打乱次序导出至total.xlsx,结果如下:

11 12 20 10
4 14 5 1
15 16 8 7
9 13 2 3
17 19 18 6

A5  注释

A6  每行的数据打乱次序

A7  行内打乱次序导出至 row.xlsx,结果如下:

4 2 3 1
6 5 7 8
9 12 10 11
16 14 15 13
18 20 17 19

A8  注释

A9  把这片数据转置后再行内打乱次序

A10  A9的结果再转置

A11  列内打乱次序导出至 col.xlsx,结果如下:

13 6 7 8
9 18 19 12
1 2 15 4
5 14 3 20
17 10 11 16