指定範囲内から無作為にデータを取り出したい 抽選をしたいとき | EXCELトピックス

スポンサーリンク
スポンサーリンク

Excelで指定範囲内から無作為にデータを取り出す方法

Excelを使って、指定した範囲内から無作為にデータを取り出し、表示させたい場合があります。この記事では、A1:A10のデータからランダムに3件のデータを取得して表示する2つの方法を解説します。

方法1: INDEX関数とRANDBETWEEN関数を使用

INDEX関数とRANDBETWEEN関数を組み合わせることで、指定した範囲内からランダムにデータを取り出すことができます。

手順

  1. まず、データをA1:A10の範囲に入力します。
  2. B列にランダムに取り出したデータを表示させるため、以下の数式を入力します。
    =INDEX($A$1:$A$10,RANDBETWEEN(1,ROWS($A$1:$A$10)))
  3. B1セルを下方向にコピーして、B1:B3にランダムなデータを表示させます。

具体的な事例

A B
1 りんご =INDEX($A$1:$A$10,RANDBETWEEN(1,ROWS($A$1:$A$10)))
2 みかん
3 ばなな
4 ぶどう
5 もも
6 すいか
7 なし
8 さくらんぼ
9 パイナップル
10 キウイ

注意点

  • この方法は結果が重複して表示されることがあります。

方法2:INDEX関数とSORTBY関数を使用 重複なし

INDEX関数とSORTBY関数を組み合わせてランダムにデータを取得するには、配列を正しく構成し、余分な条件を省きます。

並び替えをして、取得したい件数分上位を表示させる方法です。件数が同じであれば単なる並び替えということになります。

手順

  1. まず、データをA1:A10の範囲に入力します。
  2. ランダムなデータを3件取得するために、以下の数式を使用します:
    =INDEX(SORTBY($A$1:$A$10,RANDARRAY(ROWS($A$1:$A$10))),SEQUENCE(3))

数式の解説

  • SORTBY($A$1:$A$10, RANDARRAY(ROWS($A$1:$A$10))): 範囲内のデータをランダムな順序に並び替えます。
  • INDEX(…, SEQUENCE(3)): 並び替えられたデータの中から、上位3件を抽出します。
  • SEQUENCE(3): 抽出する件数を指定します。この場合は3件。

具体的な事例

以下に、データをA1:A10に入力し、B列にランダムなデータを取得する例を示します。

A B
1 りんご =INDEX(SORTBY($A$1:$A$10,RANDARRAY(ROWS($A$1:$A$10))),SEQUENCE(3))
2 みかん
3 ばなな
4 ぶどう
5 もも
6 すいか
7 なし
8 さくらんぼ
9 パイナップル
10 キウイ

注意点

  • SORTBYとINDEXを組み合わせることで簡単に重複なしのランダム抽出が可能です。
  • この方法はExcel 365および2021でのみ動作します。古いバージョンでは別の方法を使用してください。
  • 再計算時に結果が更新されるため、固定する場合は「値として貼り付け」を行ってください。

まとめ

SORTBY関数とINDEX関数を使用することで、指定範囲から重複なしでランダムにデータを抽出できます。この方法を活用して、効率的なデータ抽出を行いましょう。

使用した関数について

INDEX関数で範囲内の指定したデータを取り出す方法についてわかりやすく解説
INDEX関数についてINDEXの概要範囲内の指定位置にあるデータを取得Excel関数=INDEX( 範囲 , 行位置 , 列位置 )範囲内左上からの位置のデータを表示する 位置は省略することも(1となる)できるが、わかりにくくなるため設定しておくことが望ましい 位置は行、列の順。XYではなくYXの順になっていることに...
RANDARRAY関数でランダムな数値配列を作成する方法をわかりやすく解説
RANDARRAY関数についてRANDARRAYの概要ランダムな数値配列を生成Excel関数=RANDARRAY( 行数, 列数, 最小値, 最大値, 整数 )概要 RANDARRAY関数は、指定された範囲内でランダムな数値の配列を生成します。 行数と列数を指定して、ランダムな数値の配列を生成します。 最小値と最大値の...
RANDBETWEEN関数で指定した範囲内で整数の乱数を発生させる方法についてわかりやすく解説
RANDBETWEEN関数についてRANDBETWEENの概要整数の乱数を発生させるExcel関数=RANDBETWEEN( 最小値 , 最大値 )概要 最小値から最大値の整数の乱数を求める 0以上1未満の乱数についてはRANDを用いる RANDBETWEEN( 1 , 5 ) であれば、1,2,3,4,5 のいずれか...
ROWS関数で指定した範囲の行数を求める方法をわかりやすく解説
ROWS関数についてROWSの概要範囲内の行数を返す Excel関数=ROWS(範囲)概要 範囲内の行数を計算して返します。 指定した範囲の行数を返します。 単一セルを指定した場合、結果は「1」となります。 多次元の範囲を指定すると、行の総数を返します。ROWSはどのような時に使用するか 範囲に含まれる行の数を簡単に取...
SEQUENCE関数で開始値から連続する数値を配列として作成する方法をわかりやすく解説
SEQUENCE関数についてSEQUENCE関数の概要連続する数値の配列を生成Excel関数=SEQUENCE(行数, 列数, 開始値, 増加量)概要 SEQUENCE関数は、指定された行数や列数に基づいて連続した数値を生成する関数です。開始値や増加量を指定して柔軟な配列を作成できます。 行数や列数を指定し、2次元配列...
SORTBY関数で指定した範囲について並び替えを行う方法をわかりやすく解説
SORTBY関数についてSORTBY関数の概要指定した基準でデータを並べ替えるExcel関数=SORTBY(範囲, 基準列範囲1, 並べ替え順序1, )概要 SORTBY関数は、指定した基準列範囲と並べ替え順序に基づいて、データを並べ替えます。複数の基準を指定することが可能で、柔軟性の高い並べ替えが行えます。 複数の基...