我已经冲进了互联网,但仍然没有找到任何解决这个问题的方法:
我有一个这样的数组;
Dim PayRate As Variant
PayRate = Array(10, 20, 30)
Cells(i, "E").value = PayRate(Int((2 - 1 + 1) * Rnd + 1))
但这只会给我数组中的 20 和 30(元素 1 和 2),我还想要混合中的元素 0 = 10 吗?我该怎么做呢?
这将做到:Int(Rnd() * 3) + 1
Rnd()
返回一个从 0 到 1 到 1 的均匀分布的随机数。
重要提示:您必须Option Base 1
在模块的顶部,以便您的 PayRate 数组的最低界限为 1。似乎您在问题文本中已经有了这个。
考虑:
Sub dural()
Dim PayRate As Variant
PayRate = Array(10, 20, 30)
i = 1
N = Application.WorksheetFunction.RandBetween(LBound(PayRate), UBound(PayRate))
Cells(i, "E").Value = PayRate(N)
End Sub
我喜欢这个,因为它与数组中元素的数量无关,或者它是从零开始还是从一开始。
Dim PayRate As Variant
PayRate = Array(10, 20, 30)
indexnumber= Int(Rnd()*3
Cells(i, "E").value = PayRate(indexnumber)