Excel-VBA中数组中的随机元素

时间:2013-10-01 13:38:22

标签: arrays excel vba excel-vba random

我已经冲进了互联网,仍未找到任何解决方案:

我有一个像这样的数组;

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?我该怎么做呢?

3 个答案:

答案 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)