PR

●席替えに関数を使う

 前回説明したように、関数はくじ引きに欠かせないことが分かったと思う(「関数を使えばくじ引きも楽ちん」参照)。今回はこのくじ引きをより発展的にとらえたいと思う。

「発展的にとらえる? いったいどういう意味だね」

 買い出し係を決めるばかりがくじ引きではない、ということだ。例えば、席替えをイメージしてもらいたい。誰がどこの席に座るのか公平に決めようと思えば、これもくじ引きみたいなものだろう。つまりくじ引きを拡大解釈してとらえる。これが発展的に考えるということだよ。

「確かに席替えにも関数は使えそうだな。しかしいざやってみようと思うと、なかなか複雑そうだな」

 とんでもない。それが至って簡単なのだ。実は前回のシートを使えば簡単に席替えシートが作れるんだよ。はい、図1がそれだ。

もう出来上がった席替えシート
図1 RAND関数とRANK.AVG関数を使って席替えを一発で実行するシート。B2~B8のセルに発生させた乱数の順位をRANK.AVG関数で調べて、それを座席番号にしているという極めてシンプルなものだ。例えばC2のセルにある番号は、左隣のB2の乱数が、B2~B8の中で何番目に大きい数字かを、RANK.AVG関数で調べた結果だ
図1 RAND関数とRANK.AVG関数を使って席替えを一発で実行するシート。B2~B8のセルに発生させた乱数の順位をRANK.AVG関数で調べて、それを座席番号にしているという極めてシンプルなものだ。例えばC2のセルにある番号は、左隣のB2の乱数が、B2~B8の中で何番目に大きい数字かを、RANK.AVG関数で調べた結果だ
[画像のクリックで拡大表示]

 ご覧のようにA列には、メンバーの名前が入力されている。

「名前が前回と全く一緒じゃないか。手を抜きやがって」

 とんでもなんい。前回のメンバーがExcelで席替えするというシチュエーションさ。続いてB列だけれど、RAND関数で乱数を発生させてある。

 ポイントはC列だ。ここには発生させた乱数の順位をRANK.AVG関数で表示した。C2の数式は「=RANK.AVG(B2,$B$2:$B$8)」だ。これをC3以下にコピーしてある。

「どうしてこれが席替えになるんだ?」

 そりゃなるだろ。座席があって、それにあらかじめ座席番号を付けておけばいい。今回の場合だと、1から7の座席があるわけさ。だから当たった番号が自分の座席。ただこれだけのことさ。

「うーん、あまりにもあっけない席替えだな」