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

 

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

 

 

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

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

 

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

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

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

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

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

 

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

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

Option Explicit

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

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

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

 

特定の範囲で乱数(例: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問