Vbaで乱数を生成するにはどうすればよいですか?

VBA では、Excel で乱数を生成するさまざまな方法を使用できます。この記事では、それらを 1 つずつ見ていきます。

RND関数

VBA には、乱数を生成するためのRNDという関数があります。この関数はランダムを意味し、コードでこの関数を使用すると、0 から 1 までの乱数が返されます。RND では引数を指定する必要はありません。

 Range("A1") = Rnd()

上記のコードは、これを使用して A1 内の乱数を取得し、0.705547521 を返しました。

VBAで乱数を生成する

ただし、範囲全体に使用すると、範囲全体で同じ乱数が返されるため、乱数を複数回生成するために使用すると 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 ) を使用してコードを記述する必要があります。この式のコードは以下のようになります。

2 つの数字の間の乱数
 Sub vba_random_number() Dim myRnd As Integer myRnd = Int(2 + Rnd * (45 - 10 + 1)) Range("A1") = myRnd End Sub

このマクロを実行すると、RND は設定した最大数と最小数を使用して乱数を生成し、INT は小数点を削除します。

rnd-最大値と最小値を使用する

VBA コードでワークシート関数を使用して乱数を生成する

VBA では、ワークシート関数にアクセスし、それを使用して引数を指定することで結果を取得できます。 2 つのスプレッドシート関数は、結果として乱数を取得するのに役立ちます。

  • ランドビトゥイーン
  • ランドタブロー

これらの関数を使用する前に、設定する必要がある引数を必ず理解してください。以下のコードには、2 つの数値の間の乱数を生成する RANDBETWEEN があります。

use-randbetween-2 つの数値間の乱数を生成します
 Range("A1") = WorksheetFunction.RandBetween(1000, 2000)

ここで、最大数は 2000、最小数は 1000 です。同様に、動的配列関数である RANDARRAY を使用できます。

コードは次のとおりです。

 Range("A1:B10") = WorksheetFunction.RandArray(10, 2, 1000, 2000, True)
動的配列関数であるrandarrayを使用する

RANDARRAY の構文を見ると、整数の範囲で乱数を入力できることがわかりますが、これは上で説明したすべての方法では不可能です。

ランダ配列の構文

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です