Excelでリストから無作為抽出・ランダム抽選をする計算式

Excelでリストからレコードを無作為に抽出・ランダムする方法

Excelでは、データ分析や統計的な処理を行う際に、リストから無作為にレコードを抽出することがよくあります。ここでは、Excelの関数を使って無作為抽出の操作を行う方法を解説します。具体的には、FILTER関数SORTBY関数SEQUENCE関数RANDARRAY関数を組み合わせた計算式を使用します。

無作為抽出テストのためのサンプルデータ

以下のサンプルデータを使用して説明します。このデータはA1:C28に配置されています。

書籍番号書名金額
1001ケーススタディ民法1400
1002交通六法2700
1003法人税法の基礎2700
1004会社法2800
1005民法総則2700
1006判例六法2400
1007基礎法入門2500
1008やさしい経済法2500
1009刑法各論2100
1010現近代民法1400
1011会社法概論2000
1012商法総則1900
1013憲法2500
1014商行為法1600
1015倒産法入門2300
1016破産法1200
1017法社会学1500
1018民事訴訟法学2800
1019法学入門2500
1020労働法の要点2400
1021はやわかり刑法3000
1022講義式憲法3000
1023刑法講義2600
1024会社法1300
1025民法事例集1200
1026六法全書2300
1027労働法実務辞典2700

数式の構造

無作為抽出する計算式の基本形状

配列からレコードを無作為抽出するのExcelの計算式は以下の通りです。

=FILTER(配列,SORTBY(SEQUENCE(ROWS(配列)), RANDARRAY(ROWS(配列)))<=抽出数)

例えば配列の範囲がサンプルのようにA2:C28、抽出数が3ならば以下の式となります。{F9}キーを使うと再計算され、新しい3件が表示されます。

=FILTER(A2:C28, SORTBY(SEQUENCE(ROWS(A2:C28)), RANDARRAY(ROWS(A2:C28))) <= 3)
Excelで無作為抽出を実現する計算式の例

Excelで無作為抽出を実現する計算式の例

LET関数を用いた式

上記の式の「配列」「抽出数」を前部で指定できるようにLET関数を用いて置き換えると

=LET(
    _data, 配列,
    _n, 抽出数,
    FILTER(_data, SORTBY(SEQUENCE(ROWS(_data)), RANDARRAY(ROWS(_data))) <= _n)
)

となります。1行で表すと

=LET(_data,抽出範囲,_n,抽出数,FILTER(_data,SORTBY(SEQUENCE(ROWS(_data)),RANDARRAY(ROWS(_data)))<=_n))

です。

数式の解説

以下の再掲サンプルを使ってこの数式の構造を順に解説していきます。

=FILTER(A2:C28, SORTBY(SEQUENCE(ROWS(A2:C28)), RANDARRAY(ROWS(A2:C28))) <= 3)

データ範囲の指定

A2:C28は、無作為抽出の対象となるデータ範囲です。この範囲内のレコードから抽出を行います。

抽出数の指定

数式内の3は抽出するレコードの数を指定しています。この例では3を設定していますが、必要に応じて変更できます。

ランダムサンプルの生成

SORTBY(SEQUENCE(ROWS(A2:C28)), RANDARRAY(ROWS(A2:C28)))

この部分では、ランダム順に並べ替えたインデックスを生成しています。

  • SEQUENCE(ROWS(A2:C28)):データ範囲の行数に基づいて連続した数値の配列を生成します。
  • RANDARRAY(ROWS(A2:C28)):データ範囲の行数に基づいてランダムな数値の配列を生成します。
  • SORTBY:生成された連続した数値の配列をランダムな数値で並べ替えます。

この計算式の詳しい解説は以下のページを参照してください。

重複しない整数乱数の生成方法(Excel)
重複しない整数乱数の生成方法 Excelでは、特定の範囲内で重複しない整数乱数を簡単に生成することができます。この方法は、データ分析やテストデータの作成に非常に役立ちます。本記事では、SEQUENCE関数と RANDARRAY関数を組み合わ...

FILTER関数の適用

FILTER(A2:C28, SORTBY(SEQUENCE(ROWS(A2:C28)), RANDARRAY(ROWS(A2:C28))) <= 3)

最後に、FILTER関数を使用して、ランダム順のインデックスが指定した抽出数(3)以下のレコードを抽出します。

この方法により、指定された範囲から任意の数のレコードを無作為に抽出できます。簡潔で読みやすい数式を使用することで、データのランダム抽出を効率的に行うことができます。データから無作為標本を抽出・作成する計算式を開設しました。

コメント