Deprecated : The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
データをランダムに並べ替える(シャッフルする):Excel基本講座
Home »
Excel講座の総目次 »
Excel基本講座の目次 »
データをランダムに並べ替える(シャッフルする)
更新:2025/4/16;作成:2013/2/23
SORTBY関数とRANDARRAY関数でランダムに並べ替える(シャッフルする)
SORTBY関数とRANDARRAY関数がExcel for Microsoft 365,Excel2021以降 で使えるようになりました。
これらの関数を使うことで、乱数を発生する列(作業列)が不要になります。
D2セルに =SORTBY(B2:B48 ,RANDARRAY(47) ) と入力するだけです。
再計算のたびに並べ替えが実行されます。再計算のショートカットキーは[F9]です。
データをテーブルに変換すると、(テーブル名は「テーブル1」としています。)
=SORTBY(テーブル1[都道府県名], RANDARRAY( ROWS(テーブル1[都道府県名]) ) )
のように数式を書くことができます。
RAND関数と並べ替えの機能を使ってランダムに並べ替える
データを並べ替えるには、昇順や降順を利用することができます。
では、ランダムに並べ替える/シャッフルするにはどうすればよいでしょうか?
ランダムな値を発生させて、その値の昇順または降順に並べればよいと思います。
Excelではランダムな数値を発生させる関数として、RAND関数があります。
下図のような都道府県名を列記した表があります。
元の順序に戻せるように、A列にはナンバーリングしてあります。
C2セルに =RAND() と入力して、フィルハンドルをダブルクリックして、数式を下方向へコピーしました。
C列のセルを選択した状態で、[データ]タブの[昇順]を実行します
[降順]を実行してもかまいません。(ランダムに並べるのですから、どちらでもよい)
データがランダムに並べ変わりました(シャッフルされました)。
なお、C列の乱数は並べ替え時に再計算で新たな値に代わりますので、昇順になっていません。
並べ替えの[昇順]または[降順]を実行するたびに再計算が実行されますので、シャッフルが実行できます。
INDEX関数,MATCH関数,LARGE関数などを使ってランダムに並べ替える(シャッフルする)
次項のランダムに取り出すのと重複しますが、数式で他のセルへランダムに並べ替えることもできます。
結果だけを示します。
E2セルには
=INDEX($B$2:$B$48, MATCH( LARGE($C$2:$C$48,ROW(A1)) ,$C$2:$C$48,0) ) と入力しています。
この数式をE48セルまでコピーします。
C列の大きい値から順番に捜して、一致したら同じ行のB列の値を取り出しています。
[F9]キーで再計算するたびにデータが変化するのを確認できます。
都道府県名のデータの中からランダムに5個を取り出したいと思います。
SORTBY関数とRANDARRAY関数とTAKE関数でランダムにデータを取り出す
SORTBY関数とRANDARRAY関数でランダムに並べ替えて、TAKE関数で5個のデータを取り出します。
SORTBY関数 とRANDARRAY関数 はExcel for Microsoft 365,Excel2021以降 で使うことができます。
TAKE関数 はExcel for Microsoft 365,Excel2024以降 で使用することができます。
RANDARRAY関数で47個の乱数を作成します。
SORTBY関数で47個の乱数の順番にB列の都道府県名を並べ替えます。
TAKE関数で上から5個のデータを取り出します。
D2セルに =TAKE( SORTBY(B2:B48, RANDARRAY(47) ) ,5) と入力します。
テーブルの場合、=TAKE( SORTBY(テーブル1[都道府県名], RANDARRAY( ROWS(テーブル1[都道府県名]) ) ) ,5) といった感じになります
RAND関数の作業列を使って、RANK関数,INDEX関数,MATCH関数で取り出す
Sheet1には上記のようにRAND関数を使って並べ替えるようにしてあります。
D2セルにRAND関数で発生させた値の大きさの順位を求めてみます。
D2セルに =RANK(C2,$C$2:$C$48) と入力します。下方向へ数式をコピーします。 F2セルに =INDEX($B$2:$B$48, MATCH(ROW(A1),$D$2:$D$48,0) ) と入力して、F6セルまでコピーします。
RANK関数で求めた1〜5に一致する行の都道府県名を取り出します。
数式中の ROW(A1) はA1セルを参照しているわけではありません。数値の1を得るためのものです。
[F9]キーを押して、再計算を実行するたびにRAND関数で返される値(C列の値)が変わり、それに応じてRANK関数で返される値(D列の値)も変わります。
よって、F2:F6の値が変わるのが確認できます。
RAND関数の作業列を使って、LARGE関数,SMALL関数,INDEX関数,MATCH関数で取り出す
上記の例では、RANK関数を使ってランダムに5つの県名を取り出しましたが、ちょっと複雑になりますが、RANK関数を使わなくても取り出すことができます。
LAREGE関数を使って取り出してみます。
F2セルには =INDEX($B$2:$B$48,MATCH(LARGE ($C$2:$C$48,ROW(A1) ),$C$2:$C$48,0)) と入力して、下方向へ数式をコピーします。
なお、E3セル以降は LARGE関数の引数は 2,3,4,5 となります。 [F9]キーを押して再計算を実行すると、取り出す都道府県名がランダムに変化するのを確認することができます。
SMALL関数を使うと下図のようになります。
E2セルには =INDEX($B$2:$B$48,MATCH(SMALL ($C$2:$C$48,ROW(A1) ),$C$2:$C$48,0)) と入力しています。
なお、E3セル以降は SMALL関数の引数は 2,3,4,5 とします。
スポンサードリンク
Home |Excel講座の総目次 |Excel基本講座の目次 |データをランダムに並べ替える(シャッフルする)
PageViewCounter
Since2006/2/27