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 を含まない一様分布乱数を返します。

重要: Option Base 1PayRate 配列の下限が 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

配列内の要素の数や、0 ベースか 1 ベースかに依存しないため、これが気に入っています。

于 2013-10-01T13:47:53.440 に答える