抽選を行って当選者を決める(RAND,RANK.EQ)
応募者の中から指定した数の当選者を選択したい場合、 RAND 関数 RANK.EQ 関数を組み合わせることで応募者に重複のない番号を割り当て、番号の小さいものから順番に指定の数だけ応募者を選択することで当選者を決めることができます。ここでは Excel の関数である RAND 関数と RANK.EQ 関数を使って抽選を行い当選者を決める方法について解説します。
(Last modified: )
目次
抽選を行い当選者を決める
応募者の中から当選者を決める方法です。いくつか手動で作業が必要となります。次のシートを見て下さい。
最初に RAND
関数を使って各応募者に乱数で取得した値を割り当てます。 C3 セルに次のような数式を入力しました。
=RADN()
Enter
キーを押すと C3 セルに取得した乱数の値が表示されました。
C4 セルから C12 セルにも同じ数式を入力しました。
同じ数式を入力するために C3 セルの値をオートフィルを使って C12 セルまでコピーしたのですが、最初に C3 セルに入力されていた乱数の値とコピーしたあとの C3 セルの値が異なっています。これは RAND
関数はシート内で何か計算が行われるたびに乱数を再取得するためです。
各応募者に割り当てた乱数が毎回再計算されてしまうと面倒なので、表示された乱数の値をコピーし値として貼りつけます。C3 セルから C12 セルまでを選択してから、右クリックして表示されたメニューの中から「コピー」をクリックしてください。
もう一度右クリックして表示されたメニューの中から「形式を選択して貼り付け」をクリックしてください。
「形式を選択して貼り付け」ダイアログが表示されます。「貼りつけ」で「値」を選択してから「OK」をクリックしてください。
それぞれのセルで表示されていた乱数が値としてセルに入力されました。シートで再計算が行われても新しい乱数に置き変わることはありません。
次にこの応募者毎に設定された乱数をの値を元に順位を付け、当選者かどうかをチェックします。今回は当選者を 3 人とします。 D3 セルに次のような数式を入力しました。
=IF(RANK.EQ(C3,$C$3:$C$12)<=3,"〇当選","落選")
Enter
キーを押すと D3 セルに当選か落選かを表示します。今回は当選者が 3 人という設定だったので、乱数の値が全体の中で 3 位以下の場合は当選としています。
C4 セルとから C12 セルにも同じ数式を入力しました。
応募者の中で当選者の 3 名には「〇当選者」と表示されました。
解説
今回は応募者に割り当てが乱数の値を元に RANK.EQ
関数を使って順位を付け、その順位が 3 以下かどうかで当選者かそうでないのかを判別しています。
RANK.EQ
関数でそれぞれの応募者にどのような順位が付けられているのかを確認するため、 E3 セルに次のような数式を入力しました。
=RANK.EQ(C3,$C$3:$C$12)
Enter
キーを押すと C3 セルの値が C3:C12 の範囲の中で何番目の大きな数値なのかを E3 セルに表示します。
C4 セルから C12 セルにも同じ数式を入力しました。
順位が 1 から 3 までのセルに当選者の表示がされていることが確認できました。
今回使用した関数の解説は下記を参照されてください。
-- --
Excel の関数である RAND 関数と RANK.EQ 関数を使って抽選を行い当選者を決める方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。