メインコンテンツへスキップ

Kutools for Office — 1つのスイート、5つのツールで、もっと多くのことを成し遂げましょう。

Excelでデータリストから値をランダムに埋める方法は?

Author Kelly Last modified

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)))

INDEX + RANDBETWEEN functions to fill values randomly

🔍 この数式の詳細な説明:
  • A2:A15: ランダムに選択したい値のリストを表します。
  • COUNTA($A$2:$A$15): リスト内の項目数を動的にカウントし、リストの長さが変わった場合でも数式が堅牢に機能することを確保します。
  • RANDBETWEEN(1, n): リスト内の項目数であるnの範囲で、1からnまでのランダムな整数を生成します。
  • INDEX(range, number): リストからランダムに選択された位置に対応するアイテムを取得します。

注意点: シート内で何か変更があるたびに値が更新されるため、結果を固定したい場合は、埋めたセルをコピーして「値として貼り付け」を行うことを忘れないでください。また、この戦略では重複が除外されません。一意性が必要な場合は、後述の方法を使ったり、後処理を行ってください。

 

✅ 数式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))

INDEX + RANDARRAY functions to fill values randomly

🔍 この数式の詳細な説明:
  • A2:A15: ランダム選択を行うための指定されたデータリストです。
  • COUNTA(A2:A15): 対象リスト内のエントリー数をカウントします。
  • RANDARRAY(5,1,1, COUNTA(...), TRUE): リストの最後の位置までの範囲で5つのランダムな整数を生成し、縦方向の配列(1列)を生成します。
  • INDEX(A2:A15, …): 各ランダムな数字をリスト内の値に対応させます。

ヒント: 異なる数のランダムな値が必要な場合は、RANDARRAY(5,1, ...)5を目的の数に調整してください。結果を固定したい場合は常に「値として貼り付け」を行うことを忘れないでください。数式ベースの出力はシートの変更とともに更新されます。

💡 ヒント: RANDBETWEENとRANDARRAYはどちらも揮発性関数なので、ワークシートが変更されるたびに出力が更新されます。静的なスナップショットを保存したい場合は、結果をコピーして「値として貼り付け」を使ってください。

VBAでリストからランダムに値を埋める(高度でカスタマイズ可能なソリューション)

大規模なランダム値の割り当てを自動化したり、重複を防いだり、選択中に複雑なロジックを適用する必要がある場合、VBA(Visual Basic for Applications)によるアプローチが理想的です。VBAを使用すると、完全にユニークなランダムピックを生成でき、カスタム分布のロジックを適用し、単一のコマンドでタスクを繰り返せます。これは高度なシミュレーション、自動ランダム割り当て、または大規模なデータセットの処理に役立ちます。

この解決策は、マクロに慣れているユーザー、またはExcelワークフローを自動化したいユーザーに適しています。

1. 開発者タブをクリックし、Visual Basic(またはAlt + F11)を押してVBAエディタを開きます。これにより、Microsoft Visual Basic for Applicationsウィンドウが開きます。その後、挿入 > モジュールに移動し、以下のコードをモジュールウィンドウに貼り付けます:

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. マクロを実行するには、 Run button VBAツールバーのボタンをクリックします。マクロは、(a)ソースリスト(選択する値の範囲)、および(b)出力範囲(抽出するランダム値の数に対して、同じ数のセルを選択する)を選択するように求められます。コードは、ソースリストが十分大きい場合には出力に重複がないことを保証します。そうでない場合、警告を表示します。

このVBAメソッドには以下の利点と考慮点があります:

  • 長所:ランダムで非反復的な選択を保証;非常に大きなリストやバッチの処理が可能;繰り返しタスクの自動化が容易。
  • 短所:マクロ有効のExcelファイルが必要です。ワークブックがマクロを制限している場合、このアプローチは適さない可能性があります。目的地のセル数がソース項目数を超えるとエラーが発生する可能性があります。
  • エラーメッセージ:ソースリストに要求に足りない一意の値がある場合、マクロは通知します。
  • カスタマイズのヒント:一意性チェックを削除して重複を許可したり、特定のシナリオ向けに重み付けやフィルタリングロジックを実装するためにコードをさらに適応させることができます。

Kutools for Excelを使ってデータリストからランダムに値を選択して埋める(全バージョン対応)

Kutools for Excelは、リストからランダムに選択して値を埋めるためのアクセスしやすく、インタラクティブな解決策を提供します。これは、数式やコードを書かずにランダムな割り当てを処理したいユーザー、または最小限の手動操作で大量の選択を迅速に処理したいユーザーに最適です。Kutoolsは、出力数などのオプションをダイアログインターフェースを通じて簡単に設定できます。

Kutools for Excelは、300以上の高度な機能を提供し、複雑なタスクを簡素化し、創造性と効率を向上させます。 AI機能と統合され、Kutoolsは正確にタスクを自動化し、データ管理を容易にします。Kutools for Excelの詳細情報...無料トライアル...

Kutools for Excelをインストール後、組み込みのランダム選択機能を使用するには、次の手順に従います:

  1. ランダムに選択したい値を含む範囲を選択します。
  2. クリックします Kutools > 範囲 > 並べ替え/範囲をランダムに選択以下はスクリーンショットを参照してください:
    click Sort / Select Range Randomly of kutools
  3. 次の 並べ替え/範囲をランダムに選択 ダイアログボックスで、次のように操作します: 選択 タブに移動し、以下の操作を行います:
    • ランダムに選択するセルの数を指定します。
    • 選択タイプ内にある「ランダムにセルを選択」オプションを選択してください。
    • 最後に、「 OK 」ボタンをクリックします。
      set options in the dialog box
  4. 指定された数のランダムなセルがハイライトまたは選択されます。その後、必要に応じてこれらのセルを他の場所にコピーして貼り付けることができます。
    copy and paste the random cells

シンプルさに加えて、Kutoolsの方法は手動でのランダム化に伴う一般的なミスを防ぎ、Excelの数式やマクロ設定に詳しくなくても利用可能です。選択肢の中で一意の値が必要な場合は、ソースリストが選択する予定の項目数よりも大きく、ダイアログ内での重複なし選択オプションが利用可能であれば確認してください。


🔚結論

Excelで事前に定義されたリストからランダムに値を埋めることは、さまざまな知識レベルやシナリオに適した手法を使って効率的に管理できます:

  • すべてのExcelバージョンで、INDEXプラスRANDBETWEENの数式は、重複を許容するリストにおけるランダム選択の生成に迅速かつ信頼性があります。
  • Excel 365または2021をお持ちの場合は、RANDARRAY + INDEXのソリューションが多数の出力を一度に必要とする際の処理をスピードアップするためのよりダイナミックなバッチ選択を提供します。
  • 高度なカスタマイズが必要な場合(重複を避けたい、大規模なランダム割り当てを自動化したい、または複雑な選択ロジックを扱いたい場合)、VBAメソッドが最大限の柔軟性を提供しますが、ユーザーはマクロの実行に慣れておく必要があります。
  • ノーコードでユーザーフレンドリーなアプローチを好む場合、Kutools for Excelはグラフィカルインターフェースを通じてランダム化された選択を生成できるため、初心者にも熟練者にも迅速な結果を得るのに適しています。

一意の選択が必要かどうか、何個のランダム選択が必要か、そしてExcelの数式やマクロに関する習熟度を考慮することが重要です。ランダムな結果を共有または保存する前に、偶発的な再計算を防ぐために「値として貼り付け」機能を使用してください。さらにExcelソリューションを探したいユーザーは、実践的なガイドやヒントを掲載している当社のExcelチュートリアルセクションをご覧ください

トラブルシューティングの提案:リスト範囲の正確さを再確認し、揮発性関数による再計算に注意し、コードベースのソリューションを使用する際にはマクロのセキュリティ設定がVBAの実行を許可しているか確認してください。VBAを使用中にエラーが発生した場合(ソースリストのサイズ不足など)、指示に従って範囲を見直してください。


関連記事:

Excelで条件に基づいてランダムにセルを選択する

Excelでセルにランダムに背景色/塗りつぶし色を追加する


最高のオフィス業務効率化ツール

🤖 Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Executionコード生成カスタム数式の作成データの分析とグラフの生成Kutools Functionsの呼び出し……
人気の機能重複の検索・ハイライト・重複をマーキング空白行を削除データを失わずに列またはセルを統合丸める……
スーパーLOOKUP複数条件でのVLookup複数値でのVLookup複数シートの検索ファジーマッチ……
高度なドロップダウンリストドロップダウンリストを素早く作成連動ドロップダウンリスト複数選択ドロップダウンリスト……
列マネージャー指定した数の列を追加列の移動非表示列の表示/非表示の切替範囲&列の比較……
注目の機能グリッドフォーカスデザインビュー強化された数式バーワークブック&ワークシートの管理オートテキスト ライブラリ日付ピッカーデータの統合セルの暗号化/復号化リストで電子メールを送信スーパーフィルター特殊フィルタ(太字/斜体/取り消し線などをフィルター)……
トップ15ツールセット12 種類テキストツールテキストの追加特定の文字を削除など)50種類以上のグラフガントチャートなど)40種類以上の便利な数式誕生日に基づいて年齢を計算するなど)19 種類の挿入ツールQRコードの挿入パスから画像の挿入など)12 種類の変換ツール単語に変換する通貨変換など)7種の統合&分割ツール高度な行のマージセルの分割など)… その他多数
Kutoolsはお好みの言語で利用可能 ― 英語、スペイン語、ドイツ語、フランス語、中国語、その他40以上の言語に対応!

Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体感しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と保存時間を実現します。最も必要な機能はこちらをクリック...


Office TabでOfficeにタブインターフェースを追加し、作業をもっと簡単に

  • Word、Excel、PowerPointでタブによる編集・閲覧を実現
  • 新しいウィンドウを開かず、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成できます。
  • 生産性が50%向上し、毎日のマウスクリック数を何百回も削減!

全てのKutoolsアドインを一つのインストーラーで

Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。

Excel Word Outlook Tabs PowerPoint
  • オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
  • 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
  • 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
  • 30日間フル機能お試し —— 登録やクレジットカード不要
  • コストパフォーマンス最適 —— 個別購入よりお得