【エクセル時短】は「少しでも早く仕事を終わらせたい!」というビジネスパーソンのみなさんに、Excelの作業効率をアップするワザをお届けする連載です。毎週木曜日更新。
注目・最新の記事一覧

「重複しないランダムな整数」で並べ替え

Excelで「乱数」、すなわち「ランダムな数」を発生させる方法としては、RAND(ランダム)関数RANDBETWEEN(ランダム・ビトウィーン)関数がよく知られています。

乱数は主にサンプルデータを生成するために使われますが、もっと身近な用途として「リストをランダムに並べ替える」ことも挙げられます。例えば、レクリエーションのグループ分けや、席順を決めるときなどに便利ですよ。

こうしたランダムな並べ替えを行いたい場合、「重複しないランダムな整数」が求められると便利ですが、それにはひと工夫が必要です。【エクセル時短】第109回では、重複しないランダムな整数を生成する方法を見ていきましょう。

RAND関数の乱数をRANK関数で順位付けする

RAND関数とRANDBETWEEN関数の働きは似ていますが、RAND関数は「0以上1未満の実数(=小数)」、RANDBETWEEN関数は「指定した範囲内の整数」の乱数を発生させるという点で違いがあります。また、発生させた乱数が重複する可能性はゼロではありません。

そこで、RAND関数で発生させた乱数を基準にRANK(ランク)関数で順位付けすることで、重複しないランダムな整数を求めます。これなら、リストをランダムに並べ替える用途にもピッタリです。

RAND関数とRANK関数の構文を確認し、以下の手順を進めていきましょう。

RAND()

  • 引数は不要です。
RANK数値, 参照, 順序
  • 数値......順位を求めたい数値やセルを指定します。
  • 参照......順位を求めたい数値全体のセル範囲を指定します。
  • 順序......順位を「0」(または省略)なら降順、「1」なら昇順で数えます。
1RAND関数を入力する

【エクセル時短】リストをランダムに並べ替えたい! RAND関数とRANK関数で重複しない整数を作る

セルC3に「=RAND()」と入力します。

2乱数が発生した

【エクセル時短】リストをランダムに並べ替えたい! RAND関数とRANK関数で重複しない整数を作る

乱数が発生しました。ここではテーブルを利用しているので、リストの下方まで一気に入力されています。通常の表ではRAND関数をコピーしておいてください。

3RANK関数を入力する

【エクセル時短】リストをランダムに並べ替えたい! RAND関数とRANK関数で重複しない整数を作る

セルD3に以下の数式を入力します。コピーしたときに引数[参照]の参照範囲がずれないように、絶対参照で指定しています。

=RANK(C4,$C$3:$C$32,0)
4ランダムな順位が生成された

【エクセル時短】リストをランダムに並べ替えたい! RAND関数とRANK関数で重複しない整数を作る

ランダムな順位が生成されました。テーブルでは内表では、RAND関数と同様にコピーしておいてください。

5乱数と順位を[値]で貼り付ける

【エクセル時短】リストをランダムに並べ替えたい! RAND関数とRANK関数で重複しない整数を作る

RAND関数はシートが再計算されるたびに新しい乱数を発生させるため、このままでは何か操作したタイミングで順位が変わってしまいます。乱数と順位の列を[値]で貼り付けて、順位を固定しておきましょう。

ここではリストを例にしましたが、単純に重複しない整数の乱数がほしいときにも使えるので、ぜひ覚えておいてください。

なお、RANK関数には新しいバージョンのRANK.EQ(ランク・イコール)関数があり、引数も機能もまったく同じです。Excel 2010以降では、どちらの関数を使ってもOKです。

関数リファレンス

関連まとめ記事