Vbaで乱数を生成するにはどうすればよいですか?
VBA では、Excel で乱数を生成するさまざまな方法を使用できます。この記事では、それらを 1 つずつ見ていきます。
RND関数
VBA には、乱数を生成するためのRNDという関数があります。この関数はランダムを意味し、コードでこの関数を使用すると、0 から 1 までの乱数が返されます。RND では引数を指定する必要はありません。
Range("A1") = Rnd()
上記のコードは、これを使用して A1 内の乱数を取得し、0.705547521 を返しました。
ただし、範囲全体に使用すると、範囲全体で同じ乱数が返されるため、乱数を複数回生成するために使用すると null になります。
さて、ここでそれを使用しても意味がありませんね。ただし、 FOR NEXT LOOPを使用できる解決策があります。
上記のコードには、選択したセルから開始して 10 個のセルを (1 つずつ) 通過し、乱数を追加するループがあります。
完全なコードは次のとおりです。
Sub vba_random_number() Dim i As Long i = 10 For i = 1 To i ActiveCell.Value = Rnd() ActiveCell.Offset(1, 0).Select Next i End Sub
2 つの数値の間の乱数
定義された 2 つの数値の間で乱数を生成する場合は、2 つのVBA 関数( RND + INT ) を使用してコードを記述する必要があります。この式のコードは以下のようになります。
Sub vba_random_number() Dim myRnd As Integer myRnd = Int(2 + Rnd * (45 - 10 + 1)) Range("A1") = myRnd End Sub
このマクロを実行すると、RND は設定した最大数と最小数を使用して乱数を生成し、INT は小数点を削除します。
VBA コードでワークシート関数を使用して乱数を生成する
VBA では、ワークシート関数にアクセスし、それを使用して引数を指定することで結果を取得できます。 2 つのスプレッドシート関数は、結果として乱数を取得するのに役立ちます。
- ランドビトゥイーン
- ランドタブロー
これらの関数を使用する前に、設定する必要がある引数を必ず理解してください。以下のコードには、2 つの数値の間の乱数を生成する RANDBETWEEN があります。
Range("A1") = WorksheetFunction.RandBetween(1000, 2000)
ここで、最大数は 2000、最小数は 1000 です。同様に、動的配列関数である RANDARRAY を使用できます。
コードは次のとおりです。
Range("A1:B10") = WorksheetFunction.RandArray(10, 2, 1000, 2000, True)
RANDARRAY の構文を見ると、整数の範囲で乱数を入力できることがわかりますが、これは上で説明したすべての方法では不可能です。