怎么把一片 Excel 的区域打乱次序

现有Excel文件book1.xlsx,数据如下:

1,2

1,2

1,98

1,21

1,97

1,21

1,98

1,21

1,99

1,22

1,22

1,99

1,98

1,97

1,2

1,98

1,21

1,22

1,22

1,98

1,97

1,97

1,23

1,2

1,99

需要将这5*5区域内的数据整片打乱次序,结果如下:

1,98

1,98

1,97

1,23

1,99

1,98

1,21

1,2

1,99

1,98

1,22

1,22

1,22

1,99

1,21

1,2

1,2

1,97

1,2

1,22

1,98

1,97

1,97

1,21

1,21

借助集算器可以很方便地完成这件事。
集算器安装包可去
润乾网站下载集算器职场版,运行时需要一个授权,免费版本就够用。

1.        在集算器中编写脚本p1.dfx:


A

1

=file("book1.xlsx").xlsimport@w()

2

=A1.conj(~).sort(rand()).group(#%5)

A1   读取 book1.xlsx 数据,选项@w表示将数据成序列的序列。

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

2.     执行脚本,A2 中的数据是需要的结果。

若需要在行内打乱次序,脚本可以这样写:


A

1

=file("book1.xlsx").xlsimport@w()

2

=A1.(~.sort(rand()))

A1   读取 book1.xlsx 数据,选项@w表示将数据成序列的序列。

A2   对序列内的每个序列打乱次序

若需要在列内打乱次序,脚本可以这样写:


A

1

=file("book1.xlsx").xlsimport@w()

2

=transpose(A1).(~.sort(rand()))

3

=transpose(A2)

A1   读取 book1.xlsx 数据,选项@w表示将数据成序列的序列。

A2   将 A1 行列互换后,对序列内的每个序列打乱次序

A3   将 A2 行列互换