TL;DR — Excel のあらゆるランダム抽出は、まったく同じ技です。各行にランダムな数を 付け、その数で並べ替える。 上から取ればランダムな標本、全体を並べ替えればシャッフルに なります。Excel 365 なら数式 1 本 —
=TAKE(SORTBY(data, RANDARRAY(ROWS(data))), n)がn行を 重複なし で選びます。 標本が有効かどうかを決める唯一の区別が、非復元抽出(ランダムキーで並べ替え — どの抽選 も別々)と 復元抽出(INDEX+RANDBETWEEN— 抽選が繰り返し得る)です。そして生きたRAND()で並べ替えるなら、先に値へ固定 しないと、並べ替えの最中に振り直されます。
' 最新(Excel 365)— 重複なしで 10 行をランダムに選ぶ:
=TAKE(SORTBY(A2:C500, RANDARRAY(ROWS(A2:C500))), 10)
' リスト全体をランダムな順序にシャッフル:
=SORTBY(A2:A100, RANDARRAY(ROWS(A2:A100)))
' 古典(どのバージョンでも)— 補助列を作り、それで並べ替える:
' B2: =RAND() 次に コピー → 値貼り付け → B 列で並べ替え → 上位 N 件を取る
「行をいくつかランダムに選ぶ」は簡単そうですし、数式もほぼ簡単です。正しい ランダム標本 と、それらしく見える 間違った 標本を分けるのは、ほとんどの人が自分で選んでいると気づか ない 1 つの選択 — 同じ行が 2 回選ばれ得るかどうか — です。そこさえ外さなければ、仕組み自体 はやさしいものです。
この記事で学べること
- 普遍のパターン:ランダムキー → 並べ替え → 取る(すべてはこの変奏)
- SORTBY + RANDARRAY による最新の 1 行 と、RAND を使った 古典 の補助列
- 標本を台無しにする区別:非復元抽出 vs 復元抽出
- 生きた
RAND()の標本を再現不能にする「並べ替える前に固定」の罠 - リストを 公平なランダムグループ に分ける方法(ランダム振り分け)
すべての裏にある唯一のパターン:ランダムキー → 並べ替え → 取る
ここにある発想は実は 1 つだけで、以下のどの方法もその衣装違いにすぎません。
- 各行にランダムな数を 付ける。
- その数で行を 並べ替える。
- 必要な分だけ上から 取る(シャッフルなら全部取る)。
並び順がランダムなので、リストの上部はランダムな部分集合になり、並べ替わったリスト全体は シャッフルになります。それだけです。サンプリング、シャッフル、当選者の抽選、チーム分け — すべてが「ランダム性で並べ替えて、切り出す」です。それが見えれば、5 つのレシピを暗記するの ではなく、1 つを応用しているだけになります。
最新の 1 行(Excel 365)
365 では RANDARRAY がランダムキーを作り、SORTBY が並べ 替え、TAKE が上部を切り出します — 数式 1 本、補助列 なし、しかもスピルします。
=SORTBY(A2:A100, RANDARRAY(ROWS(A2:A100))) ' リスト全体をシャッフル
=TAKE(SORTBY(A2:C500, RANDARRAY(ROWS(A2:C500))), 10) ' 全列そのままで 10 行をランダムに
RANDARRAY(ROWS(range)) は行ごとにちょうど 1 つのランダムキーを生成し、SORTBY はそのキー
で行を並べ替え、TAKE(..., 10) は最初の 10 件を残します。各行が自分だけの別々のキーを受け
取り、単に 並べ替えられる だけなので、どの行も 2 回現れ得ません — これが非復元の
サンプリングであり、「10 人の顧客のランダム標本」がほぼ常に意味するものです。
古典の方法(どの Excel バージョンでも)
動的配列が登場する前は、同じパターンを補助列で行っていました。今でもどこでも動き、Excel 2019 以前ではこれが正解の道具です。
- データの隣の空いた列に
=RAND()を入れ、全行にフィルダウンします。 - その列をコピーし、形式を選択して貼り付け → 値(これが肝心の手順 — 後述)。
- その列でデータを 並べ替え ます。
- 上位 N 行があなたのランダム標本、全体はもうシャッフル済みです。
同じ 3 手 — ランダムキー、並べ替え、取る — を手作業でやっているだけです。1 つ のランダム な行を選ぶだけなら、並べ替えを丸ごと省くこともできます。
=INDEX(A2:A100, RANDBETWEEN(1, ROWS(A2:A100))) ' ランダムな 1 行 — 再利用すると重複し得る
INDEX + RANDBETWEEN を列方向に敷き詰めると 復元抽出 になる — 同じ行が戻ってくる —
ことに注意してください。それこそが次の節の主題です。
標本を台無しにする区別:復元抽出 vs 非復元抽出
これは記事全体が組み立てられている洞察です。ここを間違えると、まったく問題なさそうに 見える 間違った答えが生まれるからです。
- 非復元抽出 — 各行は 多くても 1 回 しか選ばれ得ません。これがランダムキーで並べ 替える方法です。別々の顧客の標本、シャッフル、一意な当選者の抽選、チーム分けに欲しいのは これです。
- 復元抽出 — 各抽選は独立していて、同じ行が再び選ばれ得ます。これは
INDEX(range, RANDBETWEEN(1, n))の繰り返し、または行番号を生成するために使う RANDBETWEEN です。繰り返しが正当なシミュレーション (ブートストラップ、サイコロ)には正しい選択です。
失敗の仕方は静かで、代償は高くつきます。誰かが =INDEX(list, RANDBETWEEN(1, 500)) を 50 行
にコピーして「50 人の顧客のランダム標本」を作り、その標本には同じ顧客がこっそり 2 回も 3 回
も入り込んでいます。エラーも警告もなく — ただ、2 回引かれた人を過大に重み付けする偏った標本
が残るだけです。ルール:タスクのどこかに「標本」や「一意」という言葉があるなら、必要なの
は 非復元抽出 — ランダムキーで並べ替えること。決して RANDBETWEEN の行番号ではありませ
ん。
並べ替える前に固定する罠
古典の方法を使う人を刺す、微妙なほうがこれです。RAND() は
揮発性 — 再計算のたびに振り直します — で、そして
並べ替えは再計算です。ですから 生きた =RAND() 列でデータを並べ替えると、Excel は
並べ替えの 最中に まったく新しいランダム数を生成し、得られる順序はもはや目の前の数と一致
しません。さらに悪いことに、その「標本」はシートに誰かが触れるたびに変わるので、二度と再現
も監査もできなくなります。
直し方は上の手順 2 で、これは省略できません。RAND() 列をコピーし、形式を選択して貼り
付け → 値 で、並べ替える 前 に固定する。 キーが静的な数になれば、並べ替えは安定し、標本
は再現可能になります。監査が必要なもの — コンプライアンス標本、無作為化試験の割り当て — なら
固定したキー(または抽選した日付)を記録しましょう。誰も再現できないランダムな結果は、証拠
として無価値です。
おまけ:リストを公平なランダムグループに分ける
ランダムな 振り分け — 人を N 個のチーム、A/B バケット、シフトに分ける — は、末尾にひとひね り加えた同じパターンです。ランダムキーを付け、それを順位付けし、その順位を MOD でバケットに写します。
' B 列に固定した RAND() キーがある前提で、各行を順位付けして 3 グループに割り当て:
=MOD(RANK(B2, $B$2:$B$100) - 1, 3) + 1 ' -> 1, 2, 3 のいずれか、均等かつランダムに
RANK はランダムキーを 1..N の位置に変え、MOD(..., 3) はその位置をカードを配るように 3 つ
のグループに割り振るので、グループはサイズが同じ(±1)でありながらランダムに構成されます。
3 を必要なバケット数に変えるだけです。
判断のポイント
レシピを集めるのはやめて、唯一のパターンを握っておきましょう。ランダムキー → 並べ替え →
取る。 サンプリング、シャッフル、当選者の抽選、グループ振り分けは、すべてこのパターンの
最後の一手が違うだけです。結果が 正しい かどうかを実際に決める判断は 2 つ。1 つ目は復元
の有無 — タスクに「標本」や「一意」があるなら、必要なのは非復元抽出(ランダムキーで並べ
替え)であって、繰り返し得る RANDBETWEEN の抽選ではありません。2 つ目は固定 — 生きた
RAND() / RANDARRAY() のキーを、並べ替える前に値へ変換すること。さもないと標本が足元で
振り直され、二度と再現できなくなります。あとはすべて配管仕事にすぎません。
ExcelMaster が役立つ場面
復元の区別は、まさに間違えやすく気づきにくいものです。ExcelMaster に「このリストから
30 人の顧客をランダムに、重複なしで選んで」と伝えれば、静かに二重計上してしまう RANDBETWEEN
方式ではなく、=TAKE(SORTBY(range, RANDARRAY(ROWS(range))), 30) — 非復元の方法 — を組み
立てます。「この名前をシャッフルして」や「この名簿を 4 チームにランダムに分けて」と頼めば、
ランダムキーで並べ替える数式や MOD でバケットに割る数式を書き、ランダムキーを値へ固定して
結果が動かないよう念を押します。あなたは抽選を説明するだけ。統計的に正しい仕組みを選び、
再現可能に保つのは ExcelMaster の仕事です。
よくある質問
Excel で行をランダムに選ぶには?
各行にランダムな数を付け、それで並べ替えます。Excel 365 なら数式 1 本です。
=TAKE(SORTBY(data, RANDARRAY(ROWS(data))), n) が n 行を重複なしで返します。どのバージョン
でも、=RAND() の補助列を足し、コピー → 形式を選択して貼り付け → 値 で固定し、その列で並べ
替えて上位 n 行を取ります。
Excel でリストをランダム(シャッフル)にするには?
ランダムキーでリストを並べ替えます。最新:=SORTBY(range, RANDARRAY(ROWS(range))) がリスト
全体をランダムな順序で返します。古典:=RAND() を補助列に入れて値へ固定し、その列でデータ
を並べ替えます。どちらも各項目をちょうど 1 回ずつ並べ替えます。
復元抽出と非復元抽出の違いは何ですか?
非復元抽出 は各行が多くても 1 回しか選ばれないこと — ランダムキーで並べ替える方法
(SORTBY + RANDARRAY、または固定した RAND 列)です。復元抽出 は同じ行が複数回選ばれ
得ること — INDEX(range, RANDBETWEEN(1, n)) の繰り返しです。別々の項目の本物の標本には非
復元を、繰り返しが意図されたシミュレーションにのみ復元を使います。
ランダム標本が毎回変わるのはなぜですか?
RAND() と RANDARRAY() が揮発性で、再計算のたびに振り直すからです。標本が生きたランダム
数式で駆動されていると、シートが再計算されるたびに中身が違ってきます。並べ替えたり標本を
記録したりする前に、ランダム値を先に固定してください — 選択し、コピーして、形式を選択して
貼り付け → 値 です。
Excel で項目をランダムにグループへ割り当てるには?
=RAND() キーを付けて固定し、その順位をバケットに割ります。
=MOD(RANK(key, keyrange) - 1, N) + 1 が各行を N グループのいずれかに、均等かつランダムに
割り当てます。N を必要なグループ数に変えます(3 チームなら 3、A/B 分けなら 2、という具合
です)。
検証環境
検証環境: Excel 365 (Windows 11) — 最終確認 2026-07-11。
関連ガイド: Excel RAND & RANDBETWEEN · Excel RANDARRAY · Excel SORT & SORTBY · Excel TAKE & DROP
