
Excel VBAで、毎回異なる値を出力する。ランダムな数値を自動で生成する方法を紹介します。使い方や注意点など、サンプルコードをもとに具体的に解説します。
Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る
Excel VBA ランダムな数値を自動で生成|シーン
以下のシーンで利用します。
・抽選やくじ引き
ランダムな番号や名前を選ぶ
・データテスト
仮のデータをランダムに作る
・シミュレーション
不確定な動作を再現するために使う
マクロができる人が少ない職場
数年後にはあなたより効率的な後輩にポジションを奪われるかもしれません。
👉 詳細はこちら
Excel VBA ランダムな数値を自動で生成|サンプルコード
基本構文(0~1未満の乱数を生成)
Option Explicit
Sub ShowRandomNumber()
MsgBox Rnd '例:0.845679 など
End Sub
特定の範囲で乱数(例:1〜10)
Option Explicit
Sub RandomBetween1and10()
Dim r As Integer
Randomize '初期化(実行時刻を元に乱数を変える)
r = Int(10 * Rnd) + 1 '1~10の整数
MsgBox r
End Sub
・Randomizeを使う
これを使わないと毎回同じ乱数が出ることがある
・Int()で切り捨て
小数を使いたくない場合は必須
・0スタートに注意
Rndは 0以上1未満(つまり1は含まれない)
ランダムに3人の中から1人選ぶ
Option Explicit
Sub PickRandomName()
Dim names As Variant
names = Array("田中", "佐藤", "鈴木")
Dim index As Integer
Randomize
index = Int(3 * Rnd)
MsgBox "選ばれたのは: " & names(index)
End Sub
Excel VBA ランダムな数値を自動で生成|まとめ
・Rnd → 0以上1未満のランダムな小数を返す
・Randomize → 実行ごとに結果を変える(毎回入れるのが基本)
・Int(x * Rnd) + a → 任意の範囲(a〜x+a-1)の整数を作れる
・標準モジュールでOK!初心者はSubプロシージャで動作確認
VBAマクロが書けるベースを作りたい方は、VBAエキスパート資格取得を挑戦してみてください。
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
下記から無料問題集ができます。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。