- 公開日:
エクセルで当番表をローテーションさせる方法
この記事では、エクセルを使用してスムーズに当番表を作成し、ローテーションさせる方法をご紹介します。
当番制のスケジュールを管理する際には、自動的にローテーションさせることで、簡単に適切な人員配置が可能となります。
エクセルの機能を活用して、効率的に当番表を作成し、スムーズな運用を実現しましょう。
エクセルで当番表をローテーションさせる方法
エクセルで当番表をローテーションさせる方法をご紹介します。
簡単な当番表
簡単な当番表の作成方法は、以下のとおりです。

月曜日の当番を入力します。

上図のように、各セルを当番ごとに色付けすると分かりやすくなります。

①B列のB2~B5までを「Ctrl」+「C」でコピーします。
②C3セルを選択し、「Ctrl」+「V」で貼り付けます。

C列に貼り付けられました。
①C列のC3~C5までを「Ctrl」+「C」でコピーします。
②D4セルを選択し、「Ctrl」+「V」で貼り付けます。

同様にF列までコピーするセル1つずつを減らしていき、ペーストします。
続いて、①B6セルを「Ctrl」+「C」でコピーします。
②C2セルを選択し、「Ctrl」+「V」で貼り付けます。

同様にF列までコピーするセルを1ずつ増やしていき、F列までペーストします。
日替わりで複数の場所をローテーションする当番表を作成することができました。
1週間ごとにローテーションする当番表
1週間ごとにローションする当番表の作成方法は、以下のとおりです。

上図の氏名の横に、1週間ごとにローテーションで「当番」と表示させる場合を例にご説明します。
任意のセル(例:E1)に基準日(例:6月17日)を入力します。
ここで入力する日付を基準日とするため、月曜日の日付を入れれば月曜日更新、火曜日の日付を入れれば火曜日更新となります。

B2セルに「=IF(MOD(QUOTIENT(DATEDIF($E$1,TODAY(),"d"),7),COUNTA(A2:A8))=ROW()-2,"当番","")」と入力し、Enterを押します。
数式については、「1週間ごとにローテーションする当番表の数式について」セクションで詳しくご説明します。

①関数を入力したセル(例:B2)を選択します。
②セルの右下にマウスオーバーし、+マークを表示させて下方向にドラッグします。

B列に当番をローテーションで表示させる設定が完了しました。

一目で当番を分かりやすくするため、「当番」と表示されるセルに色付けをします。
①B2:B8をドラッグして選択します。
②「ホーム」タブ、③「条件付き書式」の順に選択します。
④「セルの強調表示ルール」、⑤「文字列」の順に選択します。

「文字列」ダイアログボックスが表示されます。
①入力フォームに「当番」と入力し、②「書式」で任意の書式(例:明るい赤の背景」を選択します。
③「OK」ボタンを押します。

「当番」のセルに色付けすることができました。

翌週月曜日になると、上図にように「当番」が自動でローテーションします。
1週間ごとにローテーションする当番表の数式について

「1週間ごとにローテーションする当番表」セクションで使用した数式「=IF(MOD(QUOTIENT(DATEDIF($E$1,TODAY(),"d"),7),COUNTA(A2:A8))=ROW()-2,"当番","")」についてご説明します。
「$E$1」の日から今日までの経過週数を当番の人数(A2:A8)で割ります。そのあまりの「+2行目(-2)」(当番と表示させるセルが「B2」セルからのため)に、「当番」と表示するという意味になります。
初週は経過週数が0なので、B2セルの人が当番、次の週は経過週数が1なのでB3セルの人が当番となります。
MOD関数/QUOTIENT関数は、いずれも商の部分を求める関数です。
例えば、割り算の計算で割り切れない場合は小数点が出力されてしまいます。余りは無視して何組できるのか、物理的に最適な振り分けを組みたい、というときに使える関数です。
MOD関数とQUOTIENT関数の違いは、QUOTIENT関数は割り算の結果の整数部を返します。
ExcelのCOUNTA関数の使い方|空白ではないセルの個数を返す
日替わりでローテーションさせる
日替わりで当番をローテーションさせる方法は、以下のとおりです。

B2セルに「=IF(MOD(DATEDIF($E$1,TODAY(),"d"),COUNTA(A2:A8))=ROW()-2,"当番","")」と入力し、Enterを押します。
日替わりの場合は、÷7をする必要がないので「QUOTIENT関数」の数式は省きます。

①関数を入力したセル(例:B2)を選択します。
②セルの右下にマウスオーバーし、+マークを表示させて下方向にドラッグします。

B列に当番をローテーションで表示させる設定が完了しました。
月ごとにローテーションさせる
月ごとに当番をローテーションさせる方法は、以下のとおりです。

B2セルに「=IF(MOD(DATEDIF($E$1,TODAY(),"m"),COUNTA(A2:A8))=ROW()-2,"当番","")」と入力し、Enterを押します。
月ごとにのローテーションのため、「"m"」で月の単位を指定しています。

B列に当番をローテーションで表示させる設定が完了しました。