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

IT

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

スポンサーリンク

成果物

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

当番表の作り方

使う関数

乱数の取得

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

コピペして完成

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

乱数を削除

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

関数部分の解説

乱数をランク付け

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

別の方法

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

コメント