ランダムな席替えをしたいだけ
先生のExcel力がすごいって話
席替えって自由にやろうとすると絶対揉めますよね。
最前列は先生からよく話しかけられるし(あと口が臭い)、後ろは寝れるし、夏の窓際ほど過酷な勉強環境はありません。
やっぱり席替えはランダムが一番なんです。でも、わざわざ席替えのために40人が順番にくじを引くのはいろいろ面倒じゃないですか。
そんなとき、1年の担任のM先生は、なんとExcelでランダム席替えシートをつくっていたんです。しかも番号が出るだけでなく、席のレイアウトが見事に整理され、名前とふりがなの参照までなされており、そのシートを印刷するだけでよいという優れもの。
うひょー、はじめて見たときは感動しました。やっぱExcelの力は偉大だなと。それ以上に先生のExcel力がすごい。
2年になって困りました。先生も変わり、あのすばらしいExcelシートがない。10秒で終わった席替えも、くじ引きすると5分近くかかるんですね。
どうやって作ったのか?
名前とふりがなを参照する【XLOOKUP関数】
わたしはクラスの中ではExcelは触れる方だと自負しておりましたので、M先生のあのシートを真似して作ってみることに決めました。番号を入力すると名前とふりがなが表示されるのは、XLOOKUP関数とかでできますね。シートの見えないところに表があったのでしょう。
乱数を生成する【RAND関数】
さて、番号から名前を返す方法は簡単なのですが、では肝心の乱数の生成について。指定された範囲から乱数を出力する関数にRANDBETWEEN関数があるのですが…
簡単に言えば、
=RANDBETWEEN(1,40)
と入力すれば、1~40の整数の中でランダムな数字を出力します。しかし、この関数を40個のセルに入力しておしまい……というわけにもいかないのです。なぜなら、この方法では番号が重複するからです。
それではどうしたものか。範囲内の整数の乱数を出力するRANDBETWEEN関数のほかに、こんな乱数関数がありました。
このRAND関数は、0~1の細かな小数の乱数を出力します。もちろん、出席番号は小数ではありません。しかし、この乱数をいくつ出力しても重複は天文学的倍率でしょう。非常に細かい桁まで乱数が出力されています。
ランダムな順番を生成する【RANK関数】
さて、ここまでくればもうお分かりかもしれません。RAND関数で40個の乱数を出力し、RANK関数で順番を対応させれば…
ご覧の通り、ランダムな順番が生成されています。
再計算を自動化する
最後に、シートを再計算させるマクロを組んで、ボタンをおいておきましょう。再計算は Shift+F9、もしくは「数式」タブの右端にあります。VBAのコードもおいておきます。
活用例
実用的にデザインすると次のようになります。
右下はわかりやすいように書いておきましたが、当然省略もできます。左上の座席表のセルに直接XLOOKUP関数を書き込むわけですね。でもやはり、別枠でワンクッション置いたほうが見やすいと思います。
この記事が気に入ったらサポートをしてみませんか?