ExcelのVBAを使えば、データベースとして設定したセル範囲からランダムに値を抽出して、自動で指定セルの隣に入力する処理が簡単に実現できます。
今回は、A1:A100の範囲をデータベースと見立て、そこからランダムに1件を取得し、アクティブセルの右隣に出力するマクロを作成しました。
目次
実現したい内容
- データベースとなるセル範囲(例:
Sheet1!A1:A100)からランダムに1件取得 - 任意のセル(指定セル)の右隣(隣接セル)に出力
ActiveCellを起点とし、選択されたセルを自動処理対象とする
使用したVBAコード
以下が今回作成したVBAコードです。任意のセルを選択し、マクロを実行するだけで、隣のセルにランダムなデータが入力されます。
Sub FillAdjacentCell()
Dim TargetCell As Range
Dim DatabaseRange As Range
Dim RandomIndex As Long
Dim MaxRow As Long
' 対象のセルをアクティブなセルとして設定
Set TargetCell = ActiveCell
' データベースの範囲を設定 (例: A1:A100)
Set DatabaseRange = ThisWorkbook.Sheets("Sheet1").Range("A1:A100")
' ランダムにインデックスを取得
MaxRow = DatabaseRange.Rows.Count
RandomIndex = Int((MaxRow - 1 + 1) * Rnd + 1)
' 隣のセルにランダムに取得したデータを設定
TargetCell.Offset(0, 1).Value = DatabaseRange.Cells(RandomIndex, 1).Value
End Sub
コードの補足
Set TargetCell = ActiveCell
対象とするセルは、ユーザーが事前に選択しておくセルです。どの行・列でも対応可能です。DatabaseRange = Range("A1:A100")
ここがデータベースとなるセル範囲です。必要に応じて範囲を変更してください。RandomIndex = Int((MaxRow - 1 + 1) * Rnd + 1)
Rnd関数を使用して、1〜100までの整数をランダムに生成しています。TargetCell.Offset(0, 1)
指定セルの右隣のセルを表します。左に入れたい場合はOffset(0, -1)、下に入れたい場合はOffset(1, 0)に変更可能です。
応用と注意点
応用例
- 名前・キーワード・タグのランダム表示
- 抽選、くじ引きの補助ツールとして
- ランダムな組み合わせやテストデータの作成
注意点
Rnd関数は、連続実行時に同じ結果を返す場合があります。より自然なランダム性を求める場合は、Randomizeを先頭に追加してください。
Randomize
- データベースのセルに空白があると、その空白が出力される可能性があります。データが詰まっている範囲を正確に設定することが推奨されます。
まとめ
VBAを使えば、Excelシート上でランダムにデータを抽出し、特定セルの隣に自動で貼り付ける処理が簡単に構築できます。
ActiveCellを基準にして処理を柔軟に対応可能- データベースの範囲を変えるだけでさまざまなシーンに応用可能
Rnd関数でランダム性を担保し、選ばれた値をそのまま活用できる
日々の業務での簡易抽選やデータ自動補完などにもご活用いただけます。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
