我已经冲进了互联网,仍未找到任何解决方案:
我有一个像这样的数组;
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?我该怎么做呢?
答案 0 :(得分:2)
这样做:Int(Rnd() * 3) + 1
Rnd()
返回一个均匀分布的随机数,包括0到0,不包括1.
重要:您必须在模块顶部设置Option Base 1
,这样您的PayRate数组的最低界限为1.看起来您已经给出了问题文本。
答案 1 :(得分:0)
考虑:
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
我喜欢这个,因为它与数组中元素的数量无关,或者它是从零开始还是从一开始。
答案 2 :(得分:0)
Dim PayRate As Variant
PayRate = Array(10, 20, 30)
indexnumber= Int(Rnd()*3
Cells(i, "E").value = PayRate(indexnumber)