你的代码是一个随机选择过程,建议的洗牌,多列的改动不大,只是数组定义为多列、交换的语句要用循环而已,希望在粘贴代码之前尽量理解:
Sub RndSort()
Dim arr, i, n
n = [a2].End(4).Row '获取最大行位置
arr = [a2].Resize(n, 2) '读取A列数据到数组arr
Randomize '随机种子初始化 以保证每次得到不同的随机序列
For i = 1 To n '遍历各行
r = Int(Rnd * (n - i)) + i '从余下的位置中随机抽一个
t = arr(r, 1): arr(r, 1) = arr(i, 1): arr(i, 1) = t '随机位置r和当前位置交换 得到随机乱序
t = arr(r, 2): arr(r, 2) = arr(i, 2): arr(i, 2) = t
Next
[a2].Resize(n, 2) = arr '随机乱序后的结果写入工作表
End Sub
修改三个地方,ReSize增加列数2,交换语句增加一行同时交换第2列