平日のみで当番表を回したいのに、毎回手作業で調整していませんか。
土日や祝日を除外したり、担当者の順番を公平に保ったりするのは、想像以上に手間がかかる作業です。
特に、メンバーの増減や休みが発生すると、当番表はすぐに崩れてしまいがちです。
この記事では、エクセルの関数を使って「平日のみ」を対象にした当番表ローテーションを自動で作成する方法を、初心者の方にも分かりやすく解説します。
WORKDAY関数で平日だけの日付を作り、MOD関数とINDEX関数を組み合わせることで、担当者が自動で循環する仕組みを構築します。
さらに、休み希望への対応方法や、週替わり当番表への応用、条件付き書式で見やすく仕上げるコツまで網羅しています。
一度テンプレートを作れば、開始日を変えるだけで長く使い続けられるのも大きなメリットです。
当番表作成のストレスを減らし、誰が見ても分かりやすい運用を実現したい方は、ぜひ最後までご覧ください。
エクセルで平日のみの当番表ローテーションを作る基本的な考え方

まず最初に押さえておきたいのが、平日のみの当番表をエクセルで作る際の全体像です。
ここを理解しておくことで、後から出てくる関数の意味が一気に分かりやすくなります。
なぜ手作業の当番表は破綻しやすいのか
当番表を手作業で作っていると、最初は問題なく回っているように見えます。
しかし、担当者の増減や祝日の存在、急な休みが入った瞬間に一気に崩れがちです。
例えば、こんな経験はないでしょうか。
- 土日を飛ばし忘れて当番がずれてしまった
- 担当者が増えたのにローテーションを直していない
- 休みの人を外した結果、次の順番が分からなくなった
これは、人の手で順番を管理していること自体が原因です。
いわば、紙のカレンダーに鉛筆で名前を書き続けているような状態ですね。
ルールが複雑になるほど、人の手による管理は限界を迎えます。
| 管理方法 | 起こりやすい問題 |
|---|---|
| 手作業 | 修正漏れ・ズレ・不公平感が出やすい |
| 関数による自動化 | ルール通りに安定して回る |
関数で自動化するメリットと全体像
エクセル関数を使った当番表ローテーションの最大のメリットは、仕組み化できる点にあります。
一度ルールを数式に落とし込めば、人が考えなくても自動で当番が決まります。
今回の記事で作る当番表の基本構造は、とてもシンプルです。
- 平日のみの日付を自動で並べる
- 担当者の一覧を別で管理する
- 関数で順番を循環させて割り当てる
この仕組みは、回転寿司のレーンをイメージすると分かりやすいです。
お皿が一定の順番で流れ続けるから、途中で人が介入しなくても成立します。
エクセルの当番表ローテーションも、同じように「順番が自動で回り続ける状態」を作ることがゴールです。
次の章では、この仕組みの土台となる「平日のみのカレンダー」をエクセルでどう作るのかを、具体的な関数と一緒に解説していきます。
エクセルで平日のみを抽出するカレンダーの作り方

当番表ローテーションを安定させるために、次に重要になるのが日付の作り方です。
ここで平日のみを正しく抽出できるかどうかが、当番表全体の精度を左右します。
連続した日付を作る基本操作
まずは、エクセルで日付を自動的に並べる基本操作から確認しておきましょう。
これは、後で関数を使う際の土台になります。
例えば、B2セルに当番表の開始日として日付を入力します。
例として、2025/7/1と入力してみてください。
次に、その下のB3セルに次の数式を入力します。
=B2+1
これは、上のセルの日付に1日加えるという意味です。
あとはB3セルを下方向にドラッグすれば、日付が自動で連続表示されます。
この方法はとてもシンプルですが、土日や祝日もすべて含まれてしまいます。
そのため、平日のみを扱う当番表では次のステップが欠かせません。
| 方法 | 特徴 |
|---|---|
| +1で日付を増やす | 簡単だが土日祝日も含まれる |
| WORKDAY関数を使う | 平日のみを自動で抽出できる |
WORKDAY関数で土日祝日を除外する方法
平日のみのカレンダーを作るために使うのがWORKDAY関数です。
この関数を使うだけで、土日を自動的にスキップしてくれます。
WORKDAY関数の基本構文は次の通りです。
=WORKDAY(開始日, 日数)
例えば、B2セルに開始日が入っている場合、B3セルには次の数式を入力します。
=WORKDAY(B2,1)
これにより、B2の次の平日の日付が自動で表示されます。
金曜日の次であれば、月曜日の日付が返ってきます。
この数式を下にコピーしていくだけで、平日のみが並んだカレンダーが完成します。
平日のみの当番表を作るなら、日付は必ずWORKDAY関数で管理するのが基本です。
祝日リストを使って精度を上げるコツ
WORKDAY関数は、土日だけでなく祝日も除外できます。
そのためには、祝日の一覧表を別で用意します。
例えば、E列に祝日の日付を縦に入力していきます。
この祝日リストを、WORKDAY関数の第3引数として指定します。
数式は次のようになります。
=WORKDAY(B2,1,$E$2:$E$20)
これで、土日と祝日の両方を自動で除外できます。
祝日が増えても、リストに追加するだけで当番表が自動調整されます。
祝日を手動で削除する運用は、後から必ずズレの原因になります。
| 設定内容 | メリット |
|---|---|
| 祝日を数式に組み込む | 年が変わっても使い回せる |
| 祝日を手動で消す | 修正漏れが起きやすい |
次の章では、このカレンダーに割り当てる「担当者リスト」をどう作るべきかを解説していきます。
当番表ローテーションの土台となる担当者リストの準備
平日のみのカレンダーが完成したら、次に必要なのが担当者リストです。
このリストの作り方次第で、当番表の扱いやすさが大きく変わります。
担当者名を別表で管理すべき理由
当番表を作るときにやってしまいがちなのが、日付の横に直接名前を書いていく方法です。
一見すると分かりやすいのですが、自動化にはまったく向いていません。
なぜなら、関数は「まとまったデータ」を参照することで力を発揮するからです。
担当者を一か所に集めておかないと、ローテーションが組めなくなります。
おすすめなのは、カレンダーとは別の列や別シートに担当者名を縦に並べる方法です。
- E2セル:田中
- E3セル:佐藤
- E4セル:鈴木
- E5セル:高橋
このように、順番に並んだ一覧を作るだけで十分です。
この並び順が、そのままローテーションの順番になります。
当番表の中に直接名前を散らばせると、後から関数で制御できなくなります。
| 管理方法 | ローテーションとの相性 |
|---|---|
| 日付の横に直接入力 | 自動化が難しい |
| 担当者リストを別表で管理 | 関数で制御しやすい |
名前の定義でメンテナンス性を高める方法
担当者リストができたら、ぜひ使ってほしいのが「名前の定義」です。
これは、セル範囲に分かりやすい名前を付ける機能です。
例えば、E2からE5までの担当者名をすべて選択します。
その状態で「数式」タブを開き、「名前の定義」をクリックします。
名前には「担当者リスト」と入力して、OKを押してください。
これだけで、E2:E5という範囲を「担当者リスト」という名前で呼び出せるようになります。
数式の中で直接セル番号を書く必要がなくなります。
例えば、後ほど使う関数では次のように書けます。
=COUNTA(担当者リスト)
これにより、担当者の人数を自動で数えられます。
メンバーが増えたり減ったりしても、数式を直す必要がありません。
名前の定義を使うと、当番表は「一度作って終わり」ではなく「ずっと使える仕組み」になります。
| 設定内容 | 得られる効果 |
|---|---|
| セル範囲を直接指定 | 人数変更のたびに修正が必要 |
| 名前の定義を使用 | メンテナンスがほぼ不要 |
次の章では、いよいよ当番表ローテーションの中核となるMOD関数の仕組みを解説していきます。
MOD関数で当番を公平にローテーションさせる仕組み
ここからが、エクセルで当番表ローテーションを作るうえでの核心部分です。
少し数式が出てきますが、考え方はとてもシンプルなので安心してください。
MOD関数がローテーションに向いている理由
MOD関数は「割り算の余り」を求める関数です。
一見すると当番表とは関係なさそうに見えますが、実は相性抜群です。
例えば、次のような数式を考えてみてください。
=MOD(7,5)
この結果は2になります。
7を5で割ると余りが2だからです。
ここで重要なのは、連続した数字を同じ数で割り続けたときの動きです。
0、1、2、3、4、5、6…という数字を、5で割った余りを並べると次のようになります。
0 → 0 / 1 → 1 / 2 → 2 / 3 → 3 / 4 → 4 / 5 → 0 / 6 → 1 …
つまり、0から4までが繰り返されます。
この「繰り返される番号」を担当者の順番に当てはめるのがローテーションの正体です。
MOD関数は、順番を自動で循環させるための仕組みそのものです。
| 項目 | 内容 |
|---|---|
| 除数 | 担当者の人数 |
| 余り | 何番目の担当者か |
ROW関数とCOUNTA関数を組み合わせる考え方
MOD関数だけでは、毎日変わる数字を自動で作れません。
そこで使うのがROW関数とCOUNTA関数です。
ROW関数は、そのセルの行番号を返す関数です。
例えば、=ROW()と入力すると、その行の番号が表示されます。
これを利用すると、下にコピーするだけで連番が自動生成されます。
一方、COUNTA関数は空白でないセルの数を数える関数です。
担当者リストに使えば、担当者の人数を自動で取得できます。
ここまでを組み合わせた基本形が、次の数式です。
=MOD(ROW(A1)-1, COUNTA(担当者リスト))
この数式を下にコピーすると、0から始まり、人数分で循環する番号が作られます。
担当者が増減しても、自動で対応できるのが大きなメリットです。
人数を手入力で固定してしまうと、ローテーションはすぐに破綻します。
| 方法 | 特徴 |
|---|---|
| 人数を固定数で指定 | 変更に弱い |
| COUNTAで人数を取得 | 変更に強い |
次の章では、この番号を使って実際に担当者名を表示させるINDEX関数を解説していきます。
INDEX関数で当番者を自動表示する実践テクニック
ここまでで、平日のみの日付と、循環する番号を作る準備が整いました。
この章では、その番号を使って実際に当番者の名前を表示させます。
基本となるINDEX関数の書き方
当番者名を表示するために使うのがINDEX関数です。
INDEX関数は、指定した範囲の中から「〇番目」の値を取り出す関数です。
基本構文は次の通りです。
=INDEX(範囲, 行番号)
例えば、担当者リストの1番目の名前を表示したい場合は、次のようになります。
=INDEX(担当者リスト,1)
これで、リストの一番上にある担当者名が表示されます。
行番号を2にすれば2人目、3にすれば3人目が返ってきます。
つまり、前章で作った「循環する番号」をここに当てはめればよいわけです。
| 関数 | 役割 |
|---|---|
| MOD | 番号を循環させる |
| ROW | 連番を作る |
| COUNTA | 担当者数を取得 |
| INDEX | 名前を取り出す |
平日のみの当番表にローテーションを反映させる方法
それでは、実際に使う完成形の数式を見てみましょう。
当番を表示したい最初のセルに、次の数式を入力します。
=INDEX(担当者リスト, MOD(ROW(A1)-1, COUNTA(担当者リスト))+1)
この数式には、これまでの要素がすべて詰まっています。
ROW(A1)-1で0から始まる連番を作り、
MOD関数で担当者人数分だけ循環させ、
INDEX関数で対応する担当者名を表示しています。
あとは、この数式を下にコピーするだけです。
平日の行ごとに、担当者が自動で切り替わっていきます。
この数式一本で、平日の当番表ローテーションは完成します。
日付が増えても、担当者が増えても、数式を触る必要はありません。
仕組みが正しく回り続ける状態になります。
| 変更内容 | 必要な作業 |
|---|---|
| 開始日を変える | 日付セルを変更するだけ |
| 担当者を追加 | リストに名前を追加するだけ |
次の章では、休み希望を考慮した、より実務向けの当番表ローテーションを解説します。
休み希望を考慮した当番表ローテーションの応用
基本的な当番表ローテーションが完成したら、次に考えたいのが休みへの対応です。
実務では、全員が毎日必ず出勤しているとは限りません。
休み希望表を作成する考え方
休みを考慮した当番表を作るためには、まず専用の休み希望表を用意します。
当番表とは別に管理するのがポイントです。
例えば、次のような表を作成します。
| 日付 | 休みの人 |
|---|---|
| 2025/7/10 | 田中 |
| 2025/7/18 | 佐藤 |
日付と名前をセットで管理しておくことで、関数から判定しやすくなります。
ここでは、G列に日付、H列に名前が入っていると仮定します。
当番表の中に直接「休み」と書く運用は、自動化の妨げになります。
COUNTIF関数で休みの人を判定する方法
次に、割り当てられた当番者が休みかどうかを判定します。
ここで使うのがCOUNTIF関数です。
COUNTIF関数は、条件に一致するデータが存在するかどうかを確認できます。
考え方はとてもシンプルです。
「今日の日付」と「当番者名」の組み合わせが、休み希望表に存在するかを調べます。
存在すれば1以上、存在しなければ0が返ります。
例えば、次のような考え方になります。
- 結果が0 → 出勤している
- 結果が1以上 → 休み
実務では、この判定結果を使って表示を切り替えます。
休みの場合は「休み」と表示し、後で調整する運用が現実的です。
完全自動化にこだわらず、関数と運用ルールを組み合わせるのが長続きのコツです。
| 対応方法 | 現実性 |
|---|---|
| 全自動でスキップ | 数式が複雑になりがち |
| 休み表示+手動調整 | シンプルで安定 |
自動化と運用ルールを両立させる現実的な方法
実務でおすすめなのは、次のような運用です。
- 当番は関数で自動割り当てする
- 休みの人は自動で判定する
- 実際の交代はチーム内で調整する
これにより、当番表は常に最新の状態を保てます。
無理に複雑な数式を組まずに済むのもメリットです。
次の章では、日替わりではなく週替わりで当番を回したい場合の方法を解説します。
エクセルで当番表を週替わりローテーションにする方法
ここまでは日替わりの当番表を前提に解説してきました。
ですが、業務内容によっては週替わりの方が管理しやすいケースも多いですよね。
WEEKNUM関数で週単位管理を行う仕組み
週替わりの当番表を作る際に使うのがWEEKNUM関数です。
この関数は、指定した日付がその年の何週目かを数値で返します。
基本構文は次の通りです。
=WEEKNUM(日付,2)
第2引数を2にすることで、週の始まりを月曜日として扱えます。
平日管理の当番表では、この指定がとても重要です。
例えば、同じ週に属する日付はすべて同じ週番号になります。
この「週番号」をローテーションの基準に使えば、週替わりが実現します。
日替わりとの違いを整理すると、次のようになります。
| 方式 | 基準 |
|---|---|
| 日替わり | ROW関数の連番 |
| 週替わり | WEEKNUM関数の週番号 |
この週番号をMOD関数に渡すことで、担当者を週単位で切り替えられます。
年をまたいでも崩れない設定のコツ
WEEKNUM関数をそのまま使うと、年が変わった瞬間に週番号がリセットされます。
これが原因で、ローテーションが途中でずれてしまうことがあります。
そこでおすすめなのが、開始日からの経過週数を使う方法です。
例えば、当番表の開始日がB2セルにある場合、次のように考えます。
=WEEKNUM(対象日,2)-WEEKNUM($B$2,2)
これにより、開始週から何週目かという連番が作れます。
この数値をMOD関数に渡せば、年をまたいでも安定してローテーションが続きます。
最終的なイメージは次の通りです。
=INDEX(担当者リスト, MOD(経過週数, COUNTA(担当者リスト))+1)
同じ週の平日は、すべて同じ担当者になります。
週単位で責任を持つ当番制にしたい場合に最適です。
週替わり当番は、WEEKNUM関数と開始日基準を組み合わせるのが安定運用のポイントです。
| 注意点 | 対策 |
|---|---|
| 年跨ぎでズレる | 開始日との差分を使う |
| 週の開始曜日が違う | 第2引数を2に指定 |
次の章では、条件付き書式を使って当番表を見やすく整える方法を解説します。
条件付き書式で見やすい平日当番表に仕上げる
当番表の仕組みが完成したら、最後に取り組みたいのが見た目の調整です。
条件付き書式を使うことで、誰が見ても直感的に理解できる当番表になります。
曜日や土日を自動で色分けする方法
まずは、曜日による色分けです。
平日のみを扱う当番表でも、曜日が分かるだけで視認性は大きく向上します。
日付がB列に入っていると仮定します。
当番表全体を選択した状態で、条件付き書式の新しいルールを作成します。
ルールの種類は「数式を使用して、書式設定するセルを決定」を選びます。
数式には次のように入力します。
=WEEKDAY($B2,2)>5
これにより、土曜日と日曜日に該当する行に自動で書式が適用されます。
背景色を薄いグレーなどに設定すると、平日との違いが一目で分かります。
列番号を固定するために、$B2のように$を付ける点を忘れないでください。
| 設定項目 | ポイント |
|---|---|
| WEEKDAY関数 | 曜日を数値で判定 |
| $記号 | 列を固定して行全体に適用 |
担当者ごとに色分けして視認性を高める工夫
次におすすめなのが、担当者ごとの色分けです。
名前ごとに色が決まっていると、ローテーションの流れが一瞬で把握できます。
設定方法はとてもシンプルです。
条件付き書式で「特定の文字列を含む」ルールを使います。
例えば、田中さんのセルを青色にしたい場合は、
「セルの値が」「次の値に等しい」「田中」と設定します。
同じ要領で、他の担当者分のルールを追加していきます。
多少手間はかかりますが、完成後の見やすさは段違いです。
条件付き書式は、当番表を「使われるツール」に変える最後の仕上げです。
| 工夫 | 効果 |
|---|---|
| 曜日の色分け | 日付の把握が早くなる |
| 担当者の色分け | ローテーションが直感的になる |
