【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関数を使った乱数取得方法を覚えておけば、応用が利くのでおすすめです。

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

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説