Excelで第○希望者の抽選順位を決める方法(第1希望ほど優先で)
何を言ってるのか分からないタイトルですが、順に説明いたします。
Excel上で処理しなきゃならなくなったので、そのとき考えたアイデアを公開しておきます。
まず、3つのイベントを募集して、各イベント毎にチケットを希望者に配布しようと考えてます。
このときどのイベントがいいか第1~第3希望まで聞いて、3つのイベントそれぞれ第1~第3希望順に並べます。
3つのうちの一つのイベントが、例えばこんな感じになったとします。
抽選のルールですが、
・ランダムで決めるが、必ず第1希望の人が優先される
とします。
つまり、並べ替えは行っても、必ず第2希望の人が第1希望より高くならない(第2、第3の関係も同じ)ようにします。
もし当選数が5だとすると、この場合 第1希望3人、第2希望2人が当選となります。
実際にはこれが百人以上いるような状況で、果たしてどうやってこんな並べ替えをさせるのか?
検索してみましたが、ただ単にリストをランダムに並べ替える方法というのは見つけたものの、こんな感じに優先順を守ったまま並べ替える方法なんて見つかりませんでした。
で、散々考えた挙句に私がやった方法は以下の通り。
まず、第1希望者の横のセルに”=RAND()+2”という式を書きます。
”RAND()”は”0~1”までの乱数を発生させる関数。この場合”2~3”の間の数を返してきます。
同様に、第2希望者の横のセルは”=RAND()+1”
第3希望者の横のセルは”=RAND()”と記述します。
こんな感じになるはずです。
この状態で、乱数の大きさ順に”並べ替え”を実行。
以下のように並べ替えは実行されますが第1~第3希望の優先順は変動しません。
必ず第1希望を書いた人がリストの上に来るようになります。
あとは上から順に抽選数まで選んでやればOK。
なおこのRAND()という関数、F9キー(再計算)を押すたびに値が変化します。何度かF9を叩いてから並べ替えを実行するとより抽選らしくていいかもしれませんね。
私が実際にやったのは、名前と第1~第3希望までのイベント番号を書いた集計リストからイベントごとに第1希望→第2希望→第3希望順に並べたリストを作り出し、そのリスト作成時に名前の横のセルへ上のように”乱数+2”の数値(VBAでは”Rnd+2.0”のように記述)を書き込んで、最後にソートするというマクロを作りました。
Excelである優先順に抽選者を決めたいようなシチュエーションがありましたら、ぜひご活用ください・・・って、あんまりこういう場面はないかもしれませんが。
Microsoft Office Excel 2013 [オンラインコード] [ダウンロード][Windows版] (PC2台/1ライセンス) |
« ”iPhoneは使用できません 1分後にやり直してください”というメッセージが出たときの対処法 | トップページ | iPhoneで確実に無音撮影する方法 »
「パソコン系」カテゴリの記事
- 我が家の最近のガジェット事情(2025.01.11)
- 2024年まとめ記事(2024.12.31)
- 動画編集ソフト「Felmora(フィモーラ)」を購入(2024.12.11)
- ロジクール製小型静音Bluetoothマウスを購入(2024.11.18)
- 例のUSB電力計で会社PCの電力を測ってみた(2024.11.17)
「数値解析系」カテゴリの記事
- Windows 11でFORTRANをコンパイルしたい!という方への対処法(2025.01.04)
- どこに視線を向けているかを可視化してくれる物体検出器(2024.12.23)
- 2024年まとめ記事(2024.12.31)
- 生成AI解説書籍「ChatGPT & 生成AI」という本を買った(2024.12.08)
- Googleの生成AI「Gemini Advanced」に入ってみた(2024.12.01)
« ”iPhoneは使用できません 1分後にやり直してください”というメッセージが出たときの対処法 | トップページ | iPhoneで確実に無音撮影する方法 »
コメント