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で確実に無音撮影する方法 »
「パソコン系」カテゴリの記事
- 複数のPDFを一つにまとめるサイト(2022.05.02)
- YouTubeライブなどでよく使われる「OBS Studio」を使ってみた(2022.04.08)
- リモート会議用の照明を買った(2022.03.28)
- 大須の「古墳」に行ってきました(2022.03.25)
- HDMI端子付きUSB-C ハブを購入(2022.03.24)
「数値解析系」カテゴリの記事
- Interface 2022年5月号を買った(2022.03.26)
- AIに認識されなくなるシャツ(2022.03.09)
- OpenCVでサイゼリヤの間違い探しを解くやつ(2022.02.22)
- 2021年まとめ(2021.12.31)
- アナログメーターの画像から針の角度を読み取るやつ作ってみた(OpenCV)(2021.09.18)
« ”iPhoneは使用できません 1分後にやり直してください”というメッセージが出たときの対処法 | トップページ | iPhoneで確実に無音撮影する方法 »
コメント