0

我已经冲进了互联网,但仍然没有找到任何解决这个问题的方法:

我有一个这样的数组;

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

4

3 回答 3

4

这将做到:Int(Rnd() * 3) + 1

Rnd()返回一个从 0 到 1 到 1 的均匀分布的随机数。

重要提示:您必须Option Base 1在模块的顶部,以便您的 PayRate 数组的最低界限为 1。似乎您在问题文本中已经有了这个。

于 2013-10-01T13:47:36.110 回答
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

我喜欢这个,因为它与数组中元素的数量无关,或者它是从零开始还是从一开始。

于 2013-10-01T13:47:53.440 回答
0
Dim PayRate As Variant

PayRate = Array(10, 20, 30)
indexnumber= Int(Rnd()*3
Cells(i, "E").value = PayRate(indexnumber)
于 2020-11-08T13:23:21.233 回答