无法获取工作表函数 gamma_inv 属性 class 错误

Unable to get gamma_inv property of the worksheetfunction class error

到目前为止我的代码,第一部分,我在其中生成特定范围内的随机数:

Dim i As Long
Randomize
     For i = 1 To 20000
         Range("A" & i) = Rnd()
     Next i
      Range("A1") = ("Rand")
      ActiveCell.Range("A1:A20000").Select
    Sheets("Sheet1").Columns("A").Copy
    Sheets("Sheet1").Columns("B").PasteSpecial xlPasteValues
     Sheets("Sheet1").Columns("A").Delete
    Range("A1") = ("Rand")
      MsgBox ("Nagenerovaných 20 000 hodnôt")

在第二部分我试图得到 Gamma.Inv:

  Dim alfa As Integer
  Dim beta As Integer
  Dim a As Long
  Range("I2").Value = InputBox("zadaj parameter alfa")
  Range("J2").Value = InputBox("zadaj parameter beta")
  Range("B2").Select

 Range("I2").Value = alfa
 Range("J2").Value = beta
 For a = 1 To 20000
 Range("B" & a) = WorksheetFunction.Gamma_Inv(Rnd(), alfa, beta)
 Next a

代码的第一部分工作正常,但生成这些随机数需要一些时间。有没有更有效的方法来做到这一点?

第二部分不起作用。我想做的是使用我已经生成的随机数而不是伽玛函数中的 Rnd()。我已经用 rand() 尝试了代码的第二部分,因为我想知道它是否会起作用。

PS:这是一个学校项目,代码的每一部分都是通过点击按钮启动的,如果你想知道为什么我把它分成两部分。

对于第一部分,您可以这样做:

Dim rand_rng As Range

Set rand_rng = Range("A1:A20000")

    rand_rng = "=Rand()"
    rand_rng = rand_rng.Value2
    Range("A1") = ("Rand")
    MsgBox ("Nagenerovaných 20 000 hodnôt")

第二部分必须是这样的:

Dim g_range As Range
Set g_range = Range("B1:B20000")

    Range("I2").Value = InputBox("zadaj parameter alfa")
    Range("J2").Value = InputBox("zadaj parameter beta")      

     g_range.formula = "=Gamma.Inv(A1, $I, $J)"

N.B。正在定义的参数需要在左侧(即 alpha = Range("I2").Value

一次设置它们可能会更快一些:

[I2] = InputBox("zadaj parameter alfa")
[J2] = InputBox("zadaj parameter beta")

[A1:B20000] = [{"=RAND()", "=GAMMA.INV(A1, I, J)"}]