エクセルで当番表を作る際は、担当者を手入力で入れ替えるよりも、開始日と担当者リストを用意して関数で順番を返す形にすると管理が安定します。
日付が増えても担当者が循環し、休日を除外したり、特定の人を休ませたりする調整もしやすくなります。
この記事では、1行目にヘッダーがある当番表を例に、曜日ごとの当番、営業日だけのローテーション、例外対応までを順番に解説します。
基本の考え方は、日付から連番を作り、その番号を担当者数で割った余りに応じて名前を取り出すことです。
担当者が3人なら、1番目、2番目、3番目、再び1番目という流れを関数で繰り返せます。
エクセルで当番表を自動ローテーションする方法
| 日付 | 曜日 | 当番 |
|---|---|---|
| 2026/10/1 | 木 | 田中 |
| 2026/10/2 | 金 | 佐藤 |
| 2026/10/3 | 土 | 鈴木 |
それではまず、当番者を関数で順番に表示する基本形について解説していきます。
担当者リストを別の場所に固定し、当番欄には参照用の数式だけを入れる方法です。
担当者リストと日付欄の準備
最初に、A列へ日付、B列へ曜日、C列へ当番を並べます。
1行目は見出しとし、A2から最初の日付を入力します。
担当者の一覧は、たとえばH1に担当者、H2からH5に田中、佐藤、鈴木、高橋の順で入力しましょう。
担当者リストは途中に空白セルを入れず、ローテーションしたい順番のまま連続して配置することが大切です。
日付を連続入力するには、A2へ開始日を入力し、A3へ「=A2+1」を入れて下へコピーします。
曜日欄のB2には「=TEXT(A2,”aaa”)」を入力すると、月、火、水のような曜日を表示できます。
表示形式だけで曜日を見せたい場合は、日付セルの表示形式を調整する選択肢もあります。
INDEX関数とMOD関数による担当者の循環
続いて、C2に担当者を自動表示する数式を入れます。
=INDEX($H$2:$H$5,MOD(ROW()-ROW($C$2),COUNTA($H$2:$H$5))+1)
この数式では、INDEX関数が担当者リストから名前を取り出します。
MOD関数は割り算の余りを求めるため、担当者数を超える番号になっても、先頭へ自然に戻ります。
ROW関数は行番号を返し、C2では0、C3では1、C4では2という連番の基準になります。
最初の当番セルを基準にしているため、表を下へ伸ばしても担当順が崩れにくい設計です。
数式をC2へ入れたら、セル右下のフィルハンドルを下へドラッグしてオートフィルします。
これで4人分の名前が表示された後、5行目の当番では再び田中へ戻ります。
開始担当者を変更する調整
月初の担当を佐藤から始めたいなど、ローテーションの起点を変えたい場合もあります。
その場合は担当者リストの並び順を変更するか、数式の連番部分に加算値を入れて調整します。
=INDEX($H$2:$H$5,MOD(ROW()-ROW($C$2)+1,COUNTA($H$2:$H$5))+1)
上の数式では「+1」を加えているため、最初の担当はリストの2番目である佐藤になります。
開始担当を変えるだけなら、数式を作り直すより担当者リストの順番を入れ替える方法が理解しやすい場合もあります。
複数人で引き継ぐ当番表では、起点をどこに置いたかを表の近くへメモしておくと安心です。
【操作のポイント】担当者範囲は絶対参照にし、下方向へのオートフィルで参照先がずれないようにします。
曜日と休日を考慮した当番ローテーション
| 日付 | 区分 | 当番 |
|---|---|---|
| 2026/10/2 | 営業日 | 佐藤 |
| 2026/10/3 | 休日 | ― |
| 2026/10/5 | 営業日 | 鈴木 |
続いては、土日祝日を除いて担当を回す方法を確認していきます。
平日だけに当番を割り当てる表では、単純な行番号ではなく営業日数を基準にするのがコツです。
WEEKDAY関数で土日を除外する条件
土日には当番を表示しない場合、まず曜日を判定します。
WEEKDAY関数で「2」を指定すると、月曜日が1、日曜日が7として返されます。
=IF(WEEKDAY(A2,2)>5,””,ローテーション用の数式)
土曜日と日曜日は5より大きいため、IF関数の結果として空白を返せます。
休日のセルを空白にするだけでは担当順が進んでしまうため、次の営業日数を使う処理まで設定する必要があります。
休日にも連絡担当が必要な職場では、空白ではなく休日用の担当ルールを別に設けるとよいでしょう。
NETWORKDAYS関数で営業日番号を作る方法
平日だけで順番を進めるには、開始日からその日までの営業日数を求めます。
=NETWORKDAYS($A$2,A2,$J$2:$J$20)
J2からJ20には祝日の日付を入力しておく想定です。
NETWORKDAYS関数は土日と指定した祝日を除いた日数を返すため、営業日の連番として使えます。
たとえばD列を営業日番号にし、D2へこの数式を設定して下へコピーします。
祝日リストを別管理にしておけば、年度が変わっても当番表本体の数式を維持できます。
開始日が休日の場合の扱いは、実際の運用に合わせて事前に確認しておくと混乱を防げます。
営業日番号から担当者を返す数式
D列に営業日番号が入ったら、C2ではその番号を使って担当者を返します。
=IF(WEEKDAY(A2,2)>5,””,INDEX($H$2:$H$5,MOD(D2-1,COUNTA($H$2:$H$5))+1))
D2が1ならリストの1人目、D2が2なら2人目という流れになります。
祝日も空白にしたい場合は、COUNTIF関数で祝日リストに日付があるかを判定する条件を追加します。
休日をまたいでも次の営業日に次の担当者が表示されるため、不公平な飛ばしや重複を防ぎやすい構成です。
【操作のポイント】祝日一覧の日付は文字列ではなく、エクセルが認識する日付形式で入力します。
担当者リストを参照するローテーション関数
| 担当番号 | 参照先 | 表示名 |
|---|---|---|
| 1 | H2 | 田中 |
| 2 | H3 | 佐藤 |
続いては、担当者数が増減しても使いやすい参照方法を確認していきます。
担当者を式の中へ直接書かず、リストを参照する設計にすると、異動や交代にも対応しやすくなります。
COUNTA関数で人数を自動取得する方法
担当者数を毎回手入力すると、メンバーが増えたときに数式の修正漏れが起こりがちです。
COUNTA関数なら、名前が入っているセル数を自動で数えられます。
ローテーション人数を固定値の4ではなくCOUNTA関数で求めることで、担当者の増減に追従できます。
=COUNTA($H$2:$H$20)
ただし、H2からH20の途中に不要な文字や空白に見える数式があると、人数の判定に影響する場合があります。
担当者欄は専用の範囲として整理し、使わない行は完全に空白へ戻す運用が適しています。
名前の定義とテーブルによる管理
担当者リストを選択して名前を定義すると、数式の読みやすさを高められます。
たとえばH2からH20に「担当者一覧」という名前を付ければ、セル範囲の代わりにその名前を使用できます。
さらに、担当者一覧をテーブル化すると、最終行へ人を追加したときに範囲が広がりやすくなります。
当番表を毎月コピーして使う職場では、担当者リストをテーブルとして持つ方法が特に便利です。
テーブル名や列名は、誰が見ても役割が分かる名称に整えましょう。
数式バーとオートフィルの操作イメージ
| A | B | C | |
|---|---|---|---|
| 1 | 日付 | 曜日 | 当番 |
| 2 | 10/1 | 木 | 田中 |
| 3 | 10/2 | 金 | 佐藤 |
上のように、最初の当番セルだけへ数式を入れ、フィルハンドルで下方向にコピーします。
数式バーに表示される参照範囲のドル記号は、担当者リストを固定する絶対参照です。
【操作のポイント】数式を入力した最初のセルの結果を確認してから、オートフィルを実行します。
不在者と交代担当に対応する当番表
| 日付 | 自動当番 | 交代後 |
|---|---|---|
| 2026/10/6 | 高橋 | 伊藤 |
続いては、不在者や急な交代が出た場合の管理方法を確認していきます。
自動化を優先しすぎると例外処理が難しくなるため、元の担当と変更後の担当を分けて持つ考え方が有効です。
変更用列を追加する管理方法
自動計算した当番はC列に残し、D列に「変更後当番」という列を作ります。
交代が必要な日だけD列へ手入力し、表示用のE列でどちらを採用するか判断します。
=IF(D2<>””,D2,C2)
この式ならD列が空白のときは自動当番を表示し、変更後の名前があるときだけその名前を表示します。
自動計算の結果を直接上書きしないため、誰が本来の当番だったかを後から確認できます。
休暇予定を別表で管理する方法
休暇が事前に分かっている場合は、休暇表を別シートへ作る方法もあります。
日付と氏名を並べ、COUNTIFS関数で当番者がその日に休みかどうかを判定できます。
ただし、不在者を自動で飛ばして次の人へ回す数式は複雑になりやすいため、少人数の当番表では変更用列での調整が実務的です。
完全自動化よりも、変更履歴を残しながら確実に修正できる仕組みが当番表では重要です。
引き継ぎメモと確認欄の追加
当番表には、担当名だけでなく、引き継ぎ事項や確認者の列を追加すると運用しやすくなります。
たとえばF列を連絡事項、G列を確認欄とし、未確認の行を条件付き書式で目立たせる方法があります。
担当者の変更理由を短く残しておけば、翌月の偏りを見直すときにも役立ちます。
【操作のポイント】変更後当番の列は入力用として色を変え、自動計算列と見分けやすくします。
毎月使える当番表テンプレートの整え方
| 項目 | 設定例 |
|---|---|
| 開始日 | 月初日を入力 |
| 担当者一覧 | 別シートで管理 |
続いては、毎月繰り返し利用できる当番表の整え方を確認していきます。
一度作った数式を活かすには、入力する場所と自動計算する場所を明確に分けることが基本です。
開始日を入力セルに集約する方法
月ごとに日付を作り直す代わりに、開始日を一つのセルへ入力する形にします。
たとえばB1を開始日とし、A2へ「=$B$1」、A3へ「=A2+1」を設定します。
翌月はB1の日付を変更するだけで、表の日付を更新できます。
入力セルを色付きにしておくと、更新すべき場所が初めて使う人にも伝わりやすくなります。
印刷範囲と見やすい表示形式
当番表を紙で掲示する場合は、印刷範囲、横方向の中央配置、タイトル行の印刷を設定します。
土日には淡い色を付け、祝日や変更後当番には別の色を使うと、確認時の見落としを減らせます。
担当者名の列は幅を広めに取り、印刷時に名前が切れないかプレビューで確認しましょう。
数式エラーを防ぐ確認手順
月初と月末、休日の前後、担当者が一巡する行を重点的に確認します。
数式をコピーした範囲に空白やエラーがないかを見て、担当者の偏りも確認します。
担当者を追加または削除したときは、リスト範囲とCOUNTA関数の対象範囲をあわせて見直しましょう。
【操作のポイント】毎月の更新前にテンプレートを複製し、元ファイルを変更しない運用にします。
まとめ エクセルで関数を使った当番表ローテーションの作り方
エクセルの当番表は、INDEX関数、MOD関数、COUNTA関数を組み合わせることで、担当者を順番に自動表示できます。
土日祝日を除く運用では、NETWORKDAYS関数で営業日番号を作ると、休日をまたいでも担当順を正しく進められます。
急な交代は変更用列で管理し、元の自動当番を残す形にすると、確認や引き継ぎがしやすくなります。
担当者リスト、開始日、祝日一覧を分けて管理することが、長く使える当番表を作る近道です。
最初はシンプルなローテーションから始め、実際の業務に合わせて休日判定や変更欄を加えていきましょう。