【教師のEXCEL講座】MOD関数~2人ずつの当番表を作ろう~

教師のEXCEL講座

こんにちは。福田泰裕です。

クラス担任をしていると、様々な当番表がありますよね。
ストーブ当番、水やり当番、餌やり当番‥‥‥
どれも、当番表を作るのは結構大変です。

しかし、MOD関数を使うことで当番表が簡単に作成できます!

読者
読者

MOD関数?
聞いたことないよ‥‥‥

という方のために、MOD関数の使い方から詳しく説明していくので安心してください!

最後まで読んでいただけると嬉しいです。

MOD関数の2つの引数

MOD関数は割り算の余りを求める関数で、2つの引数が必要です。

このように指定して、「割られる数」を「割る数」で割った余りが返されます。

MOD関数の使い方の例

使い方も、とても簡単です。
=MOD(5,2)
と入力すれば…👇

mod

5を2で割った余りの「1」が表示されます👇

mod

また、セルを参照することも可能です。
このようにセルを参照すると…👇

mod

8を3で割った余りの「2」が表示されます👇

mod

このようにして、MOD関数を使えば割り算の余りが取得できるのです。

MOD関数を使って、1か月の当番表を作る

それでは、実際に当番表を作っていこうと思います。
今回はこのような表を考えていきます👇

mod

1日につき、朝と昼の2人が当番になるというものです。

しかし、ここで注意点があります。
学校が休みの日やテストが行われる日、内科検診の行われる日は当番がないということにします。

つまり、目標は下のような感じです👇

mod

クラスが9人しかいないので、9番の渚くんの次は1番の岩鬼くんに戻るようにしなければなりません。
この数字を1年分すべて入力するのは、面倒臭いので関数を使っていきましょう。

MOD関数までの準備

まずカレンダーの左側に、当番がある日に「1」を入れていきます👇

mod

次に、セルB10に、
=IF(A10=””,””,SUM(A$4:A10)*2-1)
と入力します👇

mod
mod

「空欄」つまり「休み」ならば当番はないので空欄。
「空欄でない」ならば当番があるので、「平日の日数×2 – 1」を計算しています。
これをオートフィルで縦にコピーすると…👇

mod

このようになりました。
しかしこのままVLOOKUP関数を使うと、10以上の番号で検索しても誰も見つからないためエラーになります。

MOD関数を使い、当番の番号をつくる

それでは、MOD関数を使っていきます。

作業列のセルH4に、
=IF($B4=””,””,MOD($B4,COUNTA($L$4:$L$23)))
と入力します👇

mod
mod

「空欄」つまり当番のない日は空欄で、「空欄ではない」つまり当番がある日はMOD関数を実行します。
MOD関数の中身は、セルB4の数を、クラスの人数で割った余りを表示するものになっています。

次に、隣のセルI3には先ほどの式をコピーして、
=IF($B4=””,””,MOD($B4+1,COUNTA($L$4:$L$23)))
+1」を追加します👇

mod

これを下へオートフィルでコピーすると…👇

mod

このように、人数の「9」で割った余りが表示されます!
このままVLOOKUP関数で検索したいのですが、1つだけ問題があります。

mod

それは、8番の次が「0」になっているのです。
そのため、出席番号が最後の人を検索するときは、「0」で検索する必要があります。

検索する番号を工夫する

さまざまな方法がありますが、シンプルな方法でいきましょう。
まず、名簿の作業列のセルK4に
=IF(J4=COUNTA($L$4:$L$23),0,J4)
と入力します👇

mod
mod

左の番号と人数が等しいときは「0」、そうでない場合は番号のままを表示します。
オートフィルを使って下へコピーすると…👇

mod

このように、番号9の渚くんだけが「0」となります。

VLOOKUP関数で検索する

ここまで準備ができたら、最後にVLOOKUP関数で検索しましょう。

セルF4に、
=IF($B4=””,””,VLOOKUP(H4,$K$4:$L$23,2,FALSE))
と入力します👇

mod
mod

「空欄」つまり当番のない日は空欄、そうでない日は、VLOOKUP関数を使って当番を検索します。
これを右と下へオートフィルでコピーすると…👇

mod

これで、1か月の当番表が完成しました!

MOD関数を使って、2か月以上の当番表を作る

次に2か月以上ある場合の当番表を作っていきましょう。
基本的には1か月のものと同じで、ひと手間加えるだけです。

まずは先ほど作成した表をコピーして、関数の参照先を修正します。
セルをダブルクリックして、参照先を変更させてください👇

mod

しかしこのままでは、毎月1番からのスタートになってしまいます。
5月のセルB32が「25」で終わっているので、6月のセルL4は「27」から始まらないといけません。

セルL4を、
=IF(K4=””,””,MAX(B4:B34)+1+SUM(K$4:K4)*2-1)
と変更します👇

mod

オートフィルで下へコピーすると…👇

mod

ちゃんと、5月の最後が8番の高代くん、6月の最初が9番の渚くんに変わりました。
あとは、この6月の表をコピペしていけば、何か月でも作ることができます。

まとめ:MOD関数でループする当番表を作れる

いかがでしたでしょうか。

今回紹介した当番表の最大の利点は、一度作成するとずっと使えるという点です。
名簿を貼り替えて、平日と休日の「1」を入力するだけで簡単に利用できます。

このように、翌年以降も使えるファイルを作っておくことが、教師の働き方改革へつながると考えています。

最後まで読んでいただき、ありがとうございました。

質問やご意見、ご感想などがあればコメント欄にお願いします👇

コメント

タイトルとURLをコピーしました