Excel でデータリストから値をランダムに入力するには?
Excel で事前に定義されたリストから値をランダムに選択するのは、データ分析、シミュレーション、ランダム割り当て、サンプリング、テストシナリオなど、さまざまな場面でよく行われる作業です。たとえば、抽選のシミュレーション、品質保証のためのテストケースのランダム割り当て、チームメンバーへのタスクの公平な分配などが挙げられます。Excel でこの処理を自動化すれば、手動での選択と比べてワークフローが大幅に効率化され、ミスも確実に削減できます。
この包括的なガイドでは、あらゆるユーザーにぴったりのシンプルな数式ベースのアプローチから、VBA による高度な自動化、さらにKutools for Excel のような専用でユーザーフレンドリーなツールまで、この目的を達成するための多彩な方法を詳しく解説します。各手法にはそれぞれ強みと最適な活用シーンがありますので、以下で徹底比較し、あなたのニーズに最も合うソリューションを選びやすくサポートします。
数式を使用してデータリストから値をランダムに入力する
このセクションでは、指定されたリストから値をランダムに入力するための実用的な数式ベースの手法をいくつかご紹介します。これらのソリューションは追加インストール不要で、最新のほとんどのExcel バージョンですぐにご利用いただけます。
✅ 数式1:INDEX 関数+RANDBETWEEN 関数
INDEX 関数と RANDBETWEEN 関数を組み合わせた手法は、リストから値をランダムに選ぶためのクラシックで全バージョン対応の方法です。重複が許容されるランダムサンプリングやモックデータ生成などにおいて、単一または複数のランダム値を素早く生成するのに最適です。
この方法をご利用になるには、空白セル(例:B2)に以下の数式をコピーまたは入力し、必要な個数分だけフィルハンドルを下方向にドラッグしてランダム値を入力してください。なお、RANDBETWEEN などの揮発性関数を含んでいるため、シートが再計算されるたびに結果が変化しますのでご注意ください。
=INDEX($A$2:$A$15, RANDBETWEEN(1, COUNTA($A$2:$A$15))) 
- A2:A15:ランダムに選択したい値のリストを表します。
- COUNTA($A$2:$A$15):リスト内の項目数を動的にカウントし、リストの長さが変更されても数式が堅牢に動作します。
- RANDBETWEEN(1, n):リスト内の項目数 n と1 の間でランダムな整数を生成します。
- INDEX(範囲、 番号):リスト内の指定された位置にある項目を取得します。
注意点:ワークシートを変更すると値が自動更新されるため、結果を固定したい場合は、入力済みのセルをコピーして「値として貼り付け」をご利用ください。なお、この方法では重複は除外されません。一意性が必要な場合は、後述のセクションで紹介している方法をご検討いただくか、別途後処理を行ってください。
✅ 数式2:INDEX 関数+RANDARRAY 関数(Excel 365/2021+)
INDEX 関数と RANDARRAY 関数を組み合わせたこの手法は、Excel 365 およびExcel 2021 ユーザーに最適です。動的配列を活用することで、複数のランダム選択を一度に出力でき、大量のランダム選択を一括で行いたいワークフローを効率化します。特に、特定の個数のランダム選択を素早く取得したい場合に便利です。ただし、前述の数式と同様、この方法でもバッチ内での結果の一意性は保証されません。
このソリューションを使用するには、空白セル(例:B2)に数式を入力し、Enterキーを押してください。すると、Excel が自動的に生成したランダム値を下のセルに「スピル」表示します。たとえば、次の数式はリストから5 つのランダムな値を出力します:
=INDEX(A2:A15, RANDARRAY(5, 1, 1, COUNTA(A2:A15), TRUE)) 
- A2:A15:ランダム選択の対象となるデータリストです。
- COUNTA(A2:A15):対象リスト内のエントリ数をカウントします。
- RANDARRAY(5,1,1, COUNTA(...), TRUE):リストの先頭(1)から末尾までの位置の中から5 個のランダムな整数を生成し、縦方向(1 列)の配列を作成します。
- INDEX(A2:A15, …):各ランダムな数値をリスト内の値にマッピングします。
ヒント:異なる個数のランダム値が必要な場合は、5をRANDARRAY(5,1, ...) 内の数値に応じて適宜調整してください。数式による出力はシートの変更時に自動更新されるため、結果を固定したい場合は必ず「値として貼り付け」を行ってください。
VBA を使用してリストから値をランダムに入力する(高度でカスタマイズ可能なソリューション)
大規模なランダム値の割り当てを自動化したい場合、重複入力を防止したり、選択中に複雑なロジックを適用したりするなど、高度なカスタマイズが必要であれば、VBA(Visual Basic for Applications)が最適です。VBA を使えば、完全に一意なランダム選択を生成したり、独自の分布ロジックを適用したり、単一のコマンドで繰り返しタスクを実行したりすることが可能です。これにより、高度なシミュレーション、自動ランダム割り当て、大規模データセットの処理などが効率的に実現できます。
このソリューションは、マクロに慣れている方、またはExcel のワークフローを自動化したい方に最適です。
1。「開発」タブをクリックして VBA エディターを開きます(または)Alt + F11を押す)と、「Microsoft Visual Basic for Applications」ウィンドウが表示されます。開発 > Visual Basicを選択した後、次に挿入 > 標準モジュールをクリックし、以下のコードをモジュールウィンドウに貼り付けてください:
Sub RandomFillFromList_NoDuplicates()
Dim srcRange As Range
Dim destRange As Range
Dim srcValues As Variant
Dim destCount As Integer
Dim usedIndexes As Object
Dim i As Integer
Dim randIndex As Integer
On Error Resume Next
Set srcRange = Application.InputBox("Select source list", "KutoolsforExcel", Type:=8)
If srcRange Is Nothing Then Exit Sub
Set destRange = Application.InputBox("Select destination range (number of random values to fill)", "KutoolsforExcel", Type:=8)
If destRange Is Nothing Then Exit Sub
srcValues = Application.Transpose(srcRange.Value)
destCount = destRange.Cells.Count
Set usedIndexes = CreateObject("Scripting.Dictionary")
If UBound(srcValues) < destCount Then
MsgBox "Not enough unique items in the source list to fill destination without duplicates.", vbExclamation, "KutoolsforExcel"
Exit Sub
End If
Randomize
For i = 1 To destCount
Do
randIndex = Int(Rnd() * UBound(srcValues)) + 1
Loop While usedIndexes.Exists(randIndex)
usedIndexes(randIndex) = True
destRange.Cells(i).Value = srcValues(randIndex)
Next
End Sub 2。VBA ツールバーの
ボタンをクリックしてマクロを実行します。マクロは、(a) ソースリスト(選択元の値の範囲)と、(b) リスト配置エリア(抽出するランダム値の数に応じて、同じ数のセルを選択してください)の選択を促します。ソースリストが十分に大きい場合は、このコードが出力に重複する値が含まれないことを保証します。そうでない場合は、警告が表示されます。
この VBA メソッドには、次のようなメリットと注意点があります。
- メリット:重複のないランダム選択を保証し、非常に大きなリストやバッチ処理にも対応。繰り返しタスクの自動化が簡単です!
- デメリット:マクロが有効なExcel ファイルが必要です。ワークブックでマクロが制限されている場合は、この方法はご利用いただけません。また、出力先の数が元の項目数を超えると、エラーが発生する可能性があります。
- エラー時の注意:元のリストに要求された数だけのユニークな値が不足している場合、マクロが通知します。
- カスタマイズのヒント:重複を許可するには、一意性チェックを削除してコードをさらに調整できます。また、より専門的なシナリオには、重み付けやフィルタリングのロジックを実装することも可能です。
Kutools for Excel を使用してデータリストから値をランダムに選択して入力する(すべてのバージョン)
Kutools for Excelは、リストから値をランダムに選択・入力するための、使いやすくインタラクティブなソリューションを提供します。数式やコードを記述せずにランダム割り当てを実行したい方、あるいは最小限の手作業で一括処理をスピーディーに行いたい方に最適です。Kutools では、選択する値の数など、出力を細かくコントロールできるオプションもご用意しており、これらは直感的なダイアログインターフェースから簡単に操作できます。
Kutools for Excel をインストール後、次のようにして内蔵のランダム選択機能をご利用ください。
- ランダムに選択したい値を含む範囲を選択してください。
- クリックして、Kutools > 範囲 > 並び替え、選択、またはランダムにを選択してください。以下のスクリーンショットを参照してください:
![Kutoolsの[ランダムに並べ替え/範囲を選択]をクリック](//cdn.extendoffice.com/images/stories/doc-excel/random-fill-from-list/doc-randomly-fill-values-3.webp)
- 並び替え、選択、またはランダムにダイアログボックスで、選択タブに移動し、次の操作を行います:
- ランダムに選択するセルの個数を指定します。
- 選択の種類内で、必ずセルオプションを選択してください。
- 最後に、OKボタンをクリックしてください。

- 指定された数のランダムなセルがハイライトまたは選択されます。必要に応じて、これらのセルをコピーして他の場所に貼り付けることができます。

Kutools の方法はシンプルなだけでなく、手動でのランダム化にありがちなミスを防ぎ、Excel の数式やマクロに関する知識も一切不要です。選択結果に重複のない値が必要な場合は、ソースリストの項目数が選択予定数より多くなるようにし、ダイアログに「重複なしで選択」などのオプションがある場合は、必ずその設定を確認してください。
🔚結論
Excel で事前定義されたリストから値をランダムに入力するには、ユーザーの知識レベルや使用シナリオに応じて、さまざまな手法を効率的に活用できます。
- すべてのExcel バージョンで、INDEX+RANDBETWEEN 関数の組み合わせは、特に重複が許容されるリストからランダムに選択する際に、迅速で信頼性の高い方法を提供します。
- Excel 365 または2021 をご利用の場合、RANDARRAY+INDEX を組み合わせたソリューションで、一度に多数の出力を必要とするプロセスを高速化する、より動的なバッチ選択が実現できます。
- 高度にカスタマイズ可能な要件がある場合—たとえば、重複を完全に回避したい、大規模なランダム割り当てを自動化したい、あるいは複雑な選択ロジックを実装したい—には、VBA 方式が最大限の柔軟性を提供します。ただし、ユーザーはマクロの実行に慣れている必要があります。
- コーディング不要でユーザーフレンドリーな方法を好む方には、Kutools for Excel が最適です。グラフィカルインターフェースを通じて簡単にランダム選択が行え、初心者から上級者まで、素早く結果を得たいすべての方にぴったりです。
重複を許容するか、それとも重複のない選択が必要か、必要なランダム選択の数はいくつか、そしてExcel の数式やマクロに対する習熟度を考慮することが重要です。ランダムな結果を共有または保存する前に、「値として貼り付け」機能を使って、誤って再計算されないようにしましょう。その他のExcel ソリューションに関心のある方は、Excel チュートリアルセクションをご覧いただき、より実践的なガイドやヒントをご活用ください。。
トラブルシューティングのヒント:リスト範囲の正確性を再確認し、揮発性関数による再計算に注意してください。また、コードベースのソリューションを使用する際は、マクロのセキュリティ設定で VBA の実行が許可されていることを確認してください。VBA 使用中にエラーが発生した場合(例:ソースリストのサイズが不十分など)、プロンプトに従って範囲を見直してください。
関連記事:
Excel でセルに背景色/塗りつぶし色をランダムに追加する
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得
![Kutoolsの[ランダムに並べ替え/範囲を選択]をクリック](http://cdn.extendoffice.com/images/stories/doc-excel/random-fill-from-list/doc-randomly-fill-values-3.webp)

