- 公開日:
エクセルでランダム抽出する方法
エクセルでランダム抽出することは、抽選やサンプリングを行う際に活用されることが多く、正確で公正な結果を得るためには適切な方法です。
この記事では、エクセルでランダム抽出する方法について詳しく解説していきます。
ランダム抽出のためのツールやシーン別の方法、具体的な手順をご紹介しています。
エクセルでランダム抽出する方法
エクセルでランダム抽出する方法をご紹介します。
ランダムに特定の数字を抽出する

上図の「No.」から、ランダムに数字を抽出したい場合を例にご説明します。
今回の例では1~10ですが、好きな数字や文字などに変更して応用することが可能です。

表のセルに「乱数」の項目を作成します。
B3セルに「=RAND()」と入力し、Enterを押します。
RAND関数とは、乱数を作成する関数です。
RAND関数の書式は「=RAND()」となり、引数はありません。
Excelファイルが再計算される度に、0以上1未満の整数をランダムに作成します。

①関数を入力したセル(例:B2)を選択します。
②セルの右下にマウスオーバーし、+マークを表示させて下方向にドラッグします。

B列に乱数を表示させることができました。
C2セルに「=RANK.EQ(B2,$B$2:$B$11)」と入力し、Enterを押します。
RANK.EQ関数はRANK関数の互換性関数です。
Excel 2010からRANK.AVG関数が追加され、区別するためにRANK.EQ関数となりました。そのため、RANK.EQ関数とRANK関数は同じ結果を返します。
RANK.EQ関数の書式は「数値・参照・順序」となっており、「順序」は省略可能です(省略した場合、大きいほうからの順[降順])。
数値(B2)で順位付けしたいデータを指定し、参照で順位を求める範囲を指定($B$2:$B$11)します。この数式によって、重複しないランダム抽出が可能となります。

①関数を入力したセル(例:C2)を選択します。
②セルの右下にマウスオーバーし、+マークを表示させて下方向にドラッグします。

「乱数」と「重複対策」の列に数式を入力し、抽出の準備ができました。

E2セルに「=INDEX(A2:C11,MATCH(MAX(C2:C11),C2:C11,0),1)」と入力し、Enterを押します。
数式については、以下の「ランダムに特定の数字を抽出する数式について」セクションで詳しくご説明します。

E2セルにランダムで数字を抽出させることができました。
ランダムに特定の数字を抽出する数式について

「ランダムに特定の数字を抽出する」セクションのSTEP 6で使用した「=INDEX(A2:C11,MATCH(MAX(C2:C11),C2:C11,0),1)」という数式についてご説明します。
MAX関数でC列から最大値を算出し、MATCH関数でそのセルの相対的な位置を算出します。INDEX関数で、指定した行と列が交差する位置にあるセルの参照を返します。
例えば上記の場合、C列の中の最大値のセル(例:C8)に対応するA列のセル(例:A8)の値(例:7)を返します。
MATCH関数は、指定した「照合の種類」に従って「検査範囲内」を検索し、「検索値」と一致するセルの配列内での相対的な位置を数値で返します。
MATCH関数の書式は「=MATCH(検索値, 検索範囲, [照合の種類])」です。
INDEX関数は、指定された行と列が交差する位置にあるセルまたはセルの参照を返します。
INDEX関数の書式は「=INDEX(配列, 行番号, [列番号])」です。
ExcelのINDEX関数とMATCH関数を組み合わせた使い方
指定の数字を除外してランダム抽出する
ビンゴゲームや抽選を行う場合、特定の数字を除外してランダム抽出する必要があります。

上記の「除外」項目の数字以外をランダム抽出したい場合を例にご説明します。

E2セルに「=INDEX(A2:C11,MATCH(MAX((COUNTIF(F2:F4,A2:A11)=0)*(C2:C11)),C2:C11,0),1)」と入力し、Enterを押します。
「ランダムに特定の数字を抽出する」セクションのSTEP 6でご説明している数式に、COUNTIF関数を付け足しています。
COUNTIF関数で除外する数字があるかどうかを判定し、ある場合は0(=0)、ない場合はC列の数字を掛けて(*(C2:C11))計算します。

「除外」の「7,2,10」を除く数字をランダム抽出することができました。
ランダム抽出で当選者を決定する

上図の表において、ランダムに抽出した3人を当選とし、「結果」に「当選」と表示させたい場合を例にご説明します。

表の隣のセルに「乱数」の項目を作成します。
D3セルに「=RAND()」と入力し、Enterを押します。
RAND関数については、「ランダムに特定の数字を抽出する」セクションのSTEP 1で詳しくご説明しています。

①関数を入力したセル(例:D3)を選択します。
②セルの右下にマウスオーバーし、+マークを表示させて下方向にドラッグします。

オートフィルでD列に乱数を表示させることができました。

C3セルに「=IF(RANK.EQ(D3,$D$3:$D$9)<=3,"当選","")」と入力し、Enterを押します。
RANK.EQ関数については、「ランダムに特定の数字を抽出する」セクションのSTEP 3で詳しくご説明しています。
RANK.EQ関数で、数値(D3)で順位付けしたいデータを指定し、参照で順位を求める範囲を指定($D$3:$D$9)します。
IF関数で、乱数の大きさが上位3つのセルに「当選」と表示させる設定(<=3,"当選","")をします。

①関数を入力したセル(例:C3)を選択します。
②セルの右下にマウスオーバーし、+マークを表示させて下方向にドラッグします。

3人をランダム抽出し、「当選」と表示させることができました。

F9キーを押すと乱数が再計算されるため、「結果」もその都度変わります。
抽出結果を保存したい場合
RAND関数の結果は、前述した通りセルを編集するたびに再計算されるため、その都度変わってしまいます。
厳正な1回の結果を残したい場合など、以下の操作で結果を保存しましょう。

表(例:A2:C9)をドラッグして選択し、Ctrl+Cでコピーします。

①任意のセル(例:A11)を右クリックし、②「貼り付けのオプション」から「値」を選択します。

抽出した結果をコピー&ペーストして保存することができました。
サンプリングでランダム抽出する
サンプリングでランダム抽出する方法をご紹介します。
サンプリングとは?
サンプリングとは統計調査の用語であり、調査対象の母集団の中から、調査を行うサンプル(標本)を抽出することです。
調べたいデータが大量の場合、全てのデータを調べることはコストや時間を考えると現実的ではありません。

そのため、調べたい母集団(調査の対象となる集団全体)の中から一部のデータを無作為に抽出して調査します。この抽出をサンプリングといいます。
調査の多くは、限られたサンプルへの調査によって母集団全体の傾向を推定できています。したがって、サンプリングを適切に行うことは、調査結果の質を保つためにとても重要です。
サンプリングにおいて重要なのはランダム性です。以下では、サンプリングでランダム抽出する方法をご説明します。
データ分析を追加する
エクセルの「データ」タブに「データ分析」がない場合、以下の手順で追加します。

「ファイル」タブを選択します。

「オプション」を選択します。

「Excel のオプション」ダイアログボックスが表示されます。
①「アドイン」、②「分析ツール」の順に選択し、③「設定」ボタンを押します。

「アドイン」ダイアログボックスが表示されます。
①「分析ツール」にチェックマークを入れ、②「OK」ボタンを押します。

エクセルの「データ」タブに、「データ分析」ツールが表示されるようになります。
サンプリングでランダム抽出する方法

上図の表から、サンプリングでランダム抽出する場合を例にご説明します。

①「データ」タブ、②「データ分析」の順に選択します。

「データ分析」ダイアログボックスが表示されます。
①「サンプリング」を選択し、②「OK」ボタンを押します。

「サンプリング」ダイアログボックスが表示されます。
①「入力範囲」で抽出対象の範囲(例:$B$2:$F$21)、②「データの個数」に抽出数(例:6)の順に入力します。
③「出力先」を選択し、④出力先のセル(例:$H$2)を入力し、⑤「OK」ボタンを押します。

出力先のセル(例:H2:H7)に、サンプリングでランダム抽出することができました。