Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excelvba。这个宏是否产生随机排列?_Excel_Vba - Fatal编程技术网

excelvba。这个宏是否产生随机排列?

excelvba。这个宏是否产生随机排列?,excel,vba,Excel,Vba,我现在依靠这个宏来生成随机序列,我只是想检查我得到的序列是否确实是随机的(好吧,很明显,计算机在随机情况下能做的最好) 很抱歉问了一个非常平淡的问题,但我需要在这个问题上保持冷静 非常感谢在行的后面添加这一行 Randomize Timer 这将确保您再也不会得到相同的随机数,因为它使用计时器作为生成的随机数的种子 你的代码应该是 Sub Random() For x = 1 To Selection.Rows.Count Randomize Timer r = Int(Rnd(1

我现在依靠这个宏来生成随机序列,我只是想检查我得到的序列是否确实是随机的(好吧,很明显,计算机在随机情况下能做的最好)

很抱歉问了一个非常平淡的问题,但我需要在这个问题上保持冷静


非常感谢

在行的后面添加这一行

Randomize Timer
这将确保您再也不会得到相同的随机数,因为它使用计时器作为生成的随机数的种子

你的代码应该是

Sub Random()
For x = 1 To Selection.Rows.Count
   Randomize Timer
   r = Int(Rnd(1) * (Selection.Rows.Count) + 1)
   For z = 1 To Selection.Columns.Count

       y = Selection.Cells(x, z).Formula
       Selection.Cells(x, z).Formula = Selection.Cells(r, z).Formula
       Selection.Cells(r, z).Formula = y
   Next z
Next x
End Sub

侧边查询-您选择的内容是什么?我看不出你是怎么做的?如果使用
Randomize
更改种子,速度是一个问题树,那么变量数组将比范围写入更快。尽管从xl-2010帮助
Randomize使用计时器函数的返回值作为新的种子值。
正确。Randomize使用一个数字初始化Rnd函数随机数生成器,为其提供一个新的种子值。如果省略数字,系统计时器返回的值将用作新的种子值。如果未使用“随机化”,则Rnd函数(无参数)在第一次调用时使用与种子相同的数字,然后使用最后生成的数字作为种子值。
Sub Random()
For x = 1 To Selection.Rows.Count
   Randomize Timer
   r = Int(Rnd(1) * (Selection.Rows.Count) + 1)
   For z = 1 To Selection.Columns.Count

       y = Selection.Cells(x, z).Formula
       Selection.Cells(x, z).Formula = Selection.Cells(r, z).Formula
       Selection.Cells(r, z).Formula = y
   Next z
Next x
End Sub