ExcelでVBAを使わずに簡易的なルーレット(くじ引き)を作る方法
Excelで簡易的なルーレット(くじ引き)を作りたい!
職場や学校での生活の中で、係や当番の担当者を決めるために使用する、ルーレットやくじ引きのようなものを簡単に作ることができたら便利なのに!
なんて思ったことがある方も、いらっしゃるんじゃないでしょうか。
たとえば、職場で飲み会をする際、幹事がどうしても決まらず、ルーレットやくじ引きなどの方法を使い、幹事を1人決定したいだとか。
委員会の委員長や副委員長、書紀の役割を担当する人を決定したいが、立候補や推薦がないためやむを得ず、公平にくじ引きで決めたい!
なんてケースが考えられますね。
職場や学校で手軽に用意できる筆記用具や紙、ハサミなどの文房具で、ルーレットを作るのは少し難しい作業です。
そのためこういったケースでは、紙を使ってあみだくじやくじ引きを作り、これを使って幹事や担当者、役員を決めるケースが多いでしょう。
ですがExcelの操作や関数に慣れている方であれば、Excelを使ってルーレットやくじ引きのようなものを作れそうだ、と感じることもあるはず。
ネット上で情報収集を行うと、Excel VBAを使ってルーレットやくじ引きのようなものを作る事例は複数見つかります。
ただしVBAは、プログラミング言語の一種です。
そのためプログラムが未経験の方には、少しとっつきにくいものとなってしまうでしょう。
簡易的なものであれば、ルーレットやくじ引きのようなものをExcelの関数だけで作るのは、それほど難しいことではありません。
そこで今回は、ExcelでVBAを使わずに、関数だけで簡易的なルーレット(くじ引き)を作る方法をご紹介します!
ExcelでVBAを使わずに、関数だけで簡易的なルーレットやくじ引きのようなものを作る方法
今回ご紹介する、VBAを使わずに、Excel関数だけで簡易的なルーレットやくじ引きのようなものを作る方法では、ExcelのRAND関数やVLOOKUP関数、LARGE関数、RANK関数※を使用します。
RAND関数を使って対象者それぞれに対し、乱数を生成。
その乱数の最も大きい人や、上位者(上位3名など)を、ルーレットやくじ引きの当選者として扱うというのが、基本的な仕組みです。
特定の1人を選出するケースと複数の人員を選出するケースでは、使用する関数を一部変えているため、それぞれ個別に方法をご紹介しましょう!
尚、これからご紹介する内容については、本エントリー執筆時点の最新バージョンであるExcel 2019で、正常に動作することを確認しています。
※
ルーレットの機能そのものには、ExcelのRANK関数の機能を一切使用していません。
RANK関数は、機能が正常に動作しているかどうかの確認をしやすくするために使用しています。
特定の1人を選出する簡易的なルーレット(くじ引き)を作る方法
特定の1人を選出する場合では、たとえば委員会の委員長だけを決めるケースなどが考えられますね。
今回は以下のようなExcelファイルを使い、Aさん、Bさん、Cさん、Dさん、Eさんの中から一名、委員長を選出するケースを例に、その方法をご紹介します。
まずは候補者Aさんの乱数を生成するために、C3セルに『=RAND()』という数式を入力してください。
ExcelのRAND関数は、0以上で1より小さい実数の乱数を生成するため、以下のような数値を取得できます。
次にC3セルをコピーしてからC4:C7セル範囲に対し、貼り付けオプションの左から3番目にある『数式』貼り付け機能を使って、数式を貼り付けてください。
参考:Excelの貼付・形式を選択して貼り付け動作の違いを分かりやすく解説!
この操作により、A~Eさんのそれぞれに個別の乱数を生成することができました。
次に、D3セルに『=RANK(C3,$C$3:$C$7,0)』という数式を入力してください。
この数式により、Aさんの乱数の順位(乱数の大きい順に並べたときの何番目であるか)を取得できます。
B~Eさんの乱数の順位については乱数と同じように、『数式』貼り付け機能を使い、D3セルの数式をD4:D7セル範囲に複製することで取得できます。
最後にH3セルに、『=VLOOKUP(MAX(C3:C7),C3:E7,3,FALSE)』という数式を入力してください。
この数式では、MAX関数により乱数の最大値を取得。
そして、その乱数と完全一致する乱数の行の候補者の名前を取得する仕組みとなっています。
数式の入力を終えると、H3セルに選出された担当者(候補者の氏名)が表示されており、これが乱数の順位の1位であることを確認しましょう。
また乱数は、キーボードの『F9』キーを押す度に再計算されます。
キーボードの『F9』キーの位置の例:
何度か『F9』キーを押下し、その度に担当者(候補者の氏名)が変わること。
そして担当者は常に、乱数の順位の1位の方であれば、正常に動作しています。
乱数と乱数の順位列は、途中の計算や数式の動作確認に使用するものであり、最終的な結果物には不要です。
そのため以下のように列の幅を0に設定するなどし、非表示状態にすると良いでしょう。
参考:
Excelで行や列、シートを非表示にしたり折りたたんで途中計算式を隠す方法
Excelの行や列の非表示操作のショートカットキーや、動作しない時の対処法
今回ご紹介したような、小数点以下の桁数が多い状態となるようなRAND関数の使い方では、取得される乱数が完全に同じ値となることが稀であるため、この点については考慮していません。
ですがRAND関数で取得した乱数の小数部を『=TRUNC(RAND(),1)』といったように、TRUNC関数で第2位切り捨てするなどして小数点以下の桁数を短くすると、同一の値が取得されてしまうことがあります。
この場合には、VLOOKUP関数はより前方にある行の結果を取得する動作となること、ご注意ください。
ルーレットのように演出・動作させる方法
ここまでにご紹介したExcelファイルと数式の事例により、特定の1人を選出するような動作をする簡易的なルーレット(くじ引き)が完成しています。
ただし先にご紹介したキーボードの『F9』キーを一度押下する操作方法では、一瞬で再計算が実行されるため、ルーレットのような演出動作とはなりません。
担当者が決定するまでに数秒間、ランダムに候補者の名前を切り替えながら表示。
そして最後に決定者を表示するような演出動作をしたい場合には、キーボードの『F9』キーを数秒間押下し続けてください。
この操作により、キーボードの『F9』キーを押下し続けている間は、Excelの再計算動作が何度も繰り返されるため、ルーレットのような演出動作となります。
複数の人員を選出する簡易的なルーレット(くじ引き)を作る方法
複数の人員を選出するケースでは、先にご紹介した特定の1人を選出する簡易的なルーレット(くじ引き)を作る方法で使用した数式の一部を変更することで、対応可能です。
説明にあたっては、さきほどの紹介の際に使用したExcelファイルの一部を変更した以下形式のファイルを使用します。
先のファイルに対して担当者部に番号列を追加。
また候補者から3人の担当者(委員長、副委員長、書紀)を選出するようなものへと変更しています。
この方法では、担当者部の番号列と合致する乱数の順位を持っている方が、その担当者になるという仕組みです。
上記画像の例では、乱数の順位の1位が委員長に。
そして2位は副委員長、3位は書紀の担当者になる、というわけです。
Excelには、指定された範囲の中でN番目に大きいデータを取得するLARGE関数が用意されています。
これをMAX関数(最も大きいデータを取得する関数)の代わりに使用することで、2番目や3番目に大きい乱数の候補者を取得可能です。
具体的には、I3セルに『=VLOOKUP(LARGE($C$3:$C$7,G3),$C$3:$E$7,3,FALSE)』という数式を入力してください。
この数式により、G3セルで指定されている1に合致する順位の乱数を持った候補者の氏名がI3セルに取得、表示されます。
次にI3セルをコピーし、『数式』貼り付け機能を使って、I3セルの数式をI4:I5セル範囲に複製してください。
これらの操作により、担当者部に委員長や副委員長、書紀の氏名が表示されます。
乱数と乱数の順位列、担当者部の番号列は、結果の計算に使用するものであり、最終的な結果物の見た目上には不要なものです。
そのため以下のように、列の幅を0に設定するなどして非表示状態とすることで、見た目がスッキリとします。
こちらの方法でも、キーボードの『F9』キーを数秒間押下し続けることで、ルーレットのような演出動作とできます。
以上、参考になさってくださーい!