如何在vba中生成随机数?
在VBA中,您可以使用不同的方式在Excel中生成随机数,在本文中,我们将一一研究它们。
RND功能
为了生成随机数,在 VBA 中,有一个名为RND的函数。该函数意味着随机,当您在代码中使用该函数时,它会返回 0 到 1 之间的随机数。在 RND 中,您不需要指定任何参数。
Range("A1") = Rnd()
上面的代码使用它来获取 A1 中的随机数,并返回 0.705547521。
但是,当您在整个范围内使用它时,它会在整个范围内返回相同的随机数,这使得它无法用于多次生成随机数。
现在,在这里使用它没有意义,不是吗?但是您可以使用一个解决方案: FOR NEXT LOOP 。
在上面的代码中,您有一个循环,从选定的单元格开始遍历 10 个单元格(一个接一个)并添加一个随机数。
这是完整的代码:
Sub vba_random_number() Dim i As Long i = 10 For i = 1 To i ActiveCell.Value = Rnd() ActiveCell.Offset(1, 0).Select Next i End Sub
两个数字之间的随机数
如果要生成两个定义数字之间的随机数,在这种情况下,您需要使用两个VBA 函数( RND + INT ) 编写代码。该公式的代码如下所示。
Sub vba_random_number() Dim myRnd As Integer myRnd = Int(2 + Rnd * (45 - 10 + 1)) Range("A1") = myRnd End Sub
当你运行这个宏时,RND使用你设置的最大数和最小数来生成随机数,而INT则去除小数位。
在 VBA 代码中使用工作表函数生成随机数
在 VBA 中,您可以访问工作表函数并使用它们通过指定参数来获取结果。两个电子表格函数可以帮助您在结果中获得随机数。
- 兰德之间
- 兰德·塔罗
在使用这些函数之前,请确保您了解需要设置的参数。现在,在下面的代码中,您可以使用 RANDBETWEEN 来生成两个数字之间的随机数。
Range("A1") = WorksheetFunction.RandBetween(1000, 2000)
这里最大数量是2000,最小数量是1000。同样,您可以使用RANDARRAY,它是一个动态数组函数。
这是代码。
Range("A1:B10") = WorksheetFunction.RandArray(10, 2, 1000, 2000, True)
如果您查看 RANDARRAY 的语法,您会发现您可以输入整数范围内的随机数,这是我们上面讨论的所有方法都无法实现的。