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()