Excel(エクセル)でくじ引きや当番表を作る、ランダムに振り分ける方法

IT

決まった枠数があって、その中で当番などを割り当てる方法です。

スポンサーリンク

成果物

仮にメンバーが10人いて、担当(あるいはくじの結果など)も同じだけあるものとします。
担当に対してメンバーをランダムに振り分けます。

当番表の作り方

使う関数

乱数の取得

メンバー表の左に列を挿入し、
一番上のメンバーの左に=Rand()と入力してEnterを押します。Rand関数は0~1のランダムな数値を取得できる関数です。
関数をオートフィルで一番下のメンバー左まで伸ばします。
Rand関数の値は何か処理をするたびに数値が変わる=順位が安定しないので、ただの数値に変換します。
下まで伸ばした範囲をそのままコピーし、
ホームタブ貼り付けから値の貼り付けをクリックします(他の動線でもOKです)。
変化しない乱数が取得できました。

コピペして完成

担当表の一番上に、=VLOOKUP(LARGE($A$2:$A$11,ROW()-1),$A$2:$B$11,2,FALSE)と記述します。
赤字の部分がメンバー表⁺乱数がある範囲なので、メンバー数に応じて数字を変更してください。
青字はメンバー表(例で言うB列)のひとりめのメンバーが1行目に描かれているならRow()、3行目からならRow()-2となります。例のように2行目から書かれているならそのままでOKです。
式を下までオートフィルします。
書式(罫線)をコピーしたくない場合、オートフィルオプション書式なしコピーをクリックします。
メンバーがランダムに割り振られました。

乱数を削除

乱数を削除したい場合は、先に当番表のメンバーをコピー値をコピーしてただの文字列に変換します。
その後で乱数列を削除すればOKです。もし再利用するなら、乱数部分も残しといたほうが楽です。

関数部分の解説

乱数をランク付け

Large関数を使うと、範囲の中でn番目に大きい値を取得できます。
一番後ろの数値が1なら1番大きな数字です。
この最後の数字は普通にコピー・オートフィルすると変化しないんですが、Row関数(セルの行番号を取得する)から-1してやれば、2行目なら2-1で1番大きな数字、3行目なら3-1で2番目に大きな数字を取得してくれるので、一行ずつ手打ちする必要がなくなります。
Large($A$2:$A$11,Row()-1)を並べると、A列の数字が上から大きい順に並べ換えられていることが確認できます。
A列の右にあるメンバー名をVLookUp関数で取得します。Aを検索してヒットしたらその右にあるBを表示する、というような関数で、
ここでは「一番大きな数字とセットになったメンバー=Gさん、2番目=Jさん……」と上から順にメンバーを振り分けています。

別の方法

Excel(エクセル):ランダム、乱数
Excelの乱数、ランダム関連操作、関数等まとめです。 乱数の作成 関数で乱数を求める場合、Rand関数(0~1の乱数)またはRandBetween関数(指定範囲の整数)を用います。 もしビンゴで使うような重複...
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ

コメント

モバイルバージョンを終了