Excel vba随机函数
有一个Application.Worksheetfunction.RandBetween(0, 1)
,但它只返回一个整数:0或1,而我需要一个不完整的numberr在0和1之间。
什么是工作表函数Rand()
的等价物?
工作表函数应该=RAND(0,10000)/10000
。 您可以用这种方法调整小数位数。
VBA等价物可能看起来像这个函数。 通过参数确定数字的位数。
Function RandomNumber(ByVal Digits As Integer) As Double Dim Fun As Double Randomize Fun = Rnd RandomNumber = Round(Fun, Digits) End Function
我很早以前写过这个函数,如果我需要一个随机数,我通常可以用这种方法很容易地生成这个函数。
请注意,您需要Randomize-Statement来确保每次使用函数时随机创build一组新的随机数。
Private Function random(minval As Integer, maxval As Integer, _ Optional decimalaccuracy As Integer = 10000) As Double Randomize random = (maxval - minval + 1) * Rnd + minval If decimalaccuracy <> 10000 Then random = _ Application.WorksheetFunction.Round(random, decimalaccuracy) End Function
尝试这个
Sub rndNumber() Dim rNum As Double Randomize rNum = Format(Rnd(1), "#0.00") End Sub
检查随机函数
Rnd()
是公式RAND()
的VBA等效值。
用法示例:
Dim rand1 As Double 'Initialize the random number generator. Randomize rand1 = Rnd()