Excel VBA 毎回異なる値を出力|ランダムな数値を自動で生成する方法

 

Excel VBAで、毎回異なる値を出力する。ランダムな数値を自動で生成する方法を紹介します。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA ランダムな数値を自動で生成|シーン

以下のシーンで利用します。

・抽選やくじ引き
ランダムな番号や名前を選ぶ

・データテスト
仮のデータをランダムに作る

・シミュレーション
不確定な動作を再現するために使う

 

Excel VBA ランダムな数値を自動で生成サンプルコード

基本構文(0~1未満の乱数を生成)

Option Explicit

Sub ShowRandomNumber()
    MsgBox Rnd  '例:0.845679 など
End Sub

 

自分の実力を客観的にチェックしたい。そんな方のために、自分に合った学習スタート地点がわかる無料の選択問題集をご用意しました。(VBAエキスパートベーシック資格試験から抜粋した問題です)

無料138問でいまの実力をチェック

80%ならスタンダード合格レベル、50〜79%はベーシック理解途中、49%以下は基礎理解不足※ご安心ください。この問題をされた人の情報は一切残りません。実力のチェックができる問題集で、クリックすぐにスタートではありません。解説内容の下に問題があります)

 

特定の範囲で乱数(例: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プロシージャで動作確認

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問