【ExcelVBA入門】Rnd関数・Int関数を使った乱数取得方法を徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAで乱数を取得する方法を知っていますか?

Rnd関数・Int関数を使えば、指定した範囲の数値から簡単に乱数を取得することができます。

そこで今回は、

・Rnd関数とは

といった基礎的なことから、

・Int関数を応用した整数の乱数取得方法

・指定した範囲の乱数を取得する方法

といった応用的な方法まで、徹底的に解説します!

目次

Rnd関数とは

Rnd関数を使うと、0以上1未満の乱数を簡単に取得することができます。

サンプルコード:

Sub Test1()
  MsgBox “Rnd関数の値は” & Rnd & “です。”
End Sub

実行結果:

この例では「0.4100367」と表示されている値が乱数なので、処理を実行するごとに値が変わります。

このように、簡単に乱数を取得することができます。

Int関数を使った整数の乱数取得方法

ただ、整数で乱数を取得したいケースもありますよね。

Int関数を使うと、小数以下を丸めて整数のみ取得することができます。

Sub Test2()
  MsgBox "5.55555をInt関数で変換:" & Int(5.55555) & vbCrLf & _
         "-5.55555をInt関数で変換:" & Int(-5.55555)
End Sub

実行結果:

Int関数を応用して、Rnd関数とあわせて使うと整数の乱数を取得することができます。

Sub Test3()
  MsgBox “整数の乱数は” & Int(Rnd * 10) & “です。”
End Sub

実行結果:

Rnd関数は0以上1未満なので、10かけた値をInt関数で整数のみにしています。

0 ~ 9の乱数を取得したい場合はこの方法でOKです。

応用編:指定した範囲の整数を取得する方法

0 ~ 9までの乱数取得方法を紹介しましたが、10以上の数を範囲に指定して取得したいときもありますよね。

さらに応用して以下のように書くと、指定した範囲の乱数を取得することができます。

Int((最大値 - 最小値 + 1) * Rnd + 最小値))

Int関数は銀行型の丸め方式で小数以下が切り捨てられてしまうため、最後に最小値を再度たす処理を入れています。

この方法を使えば、以下のように簡単に指定範囲の乱数が取得できます。

サンプルコード:

Sub Test4()
  Dim intMax As Integer '最大値
  Dim intMin As Integer '最小値
  intMax = 20
  intMin = 0
  
  MsgBox intMin & "~" & intMax & "の乱数は" & _
         Int((intMax - intMin + 1) * Rnd + intMin) & "です"

End Sub

実行結果:

まとめ

今回は、VBAで指定した範囲の数値を乱数を取得する方法について解説しました。

乱数はExcelでデータ分析をする場合によく使います。

Rnd関数・Int関数を使った乱数取得方法を覚えておけば、応用が利くのでおすすめです。

使い方も簡単なので、ぜひ使ってみてくださいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次