office

エクセルで平日のみの当番表ローテーションを組む方法は?関数を使った作り方を解説!

職場やチームで発生する掃除や日直といった当番活動は、円滑な運営に欠かせない要素の一つです。しかし、その当番表を作成し、公平なローテーションを維持していく作業は、思いのほか手間がかかるものではないでしょうか。特に、土日や祝日を除いた平日のみを対象とし、さらにメンバーの休み希望まで考慮に入れようとすると、手作業での管理は非常に複雑になりがちです。そこで活用したいのが、日々の業務で使い慣れたエクセルです。エクセルの関数をうまく組み合わせることで、このような複雑な条件を満たす当番表を自動で作成することが可能になります。この記事では、「エクセルで平日のみの表」をベースに、関数を駆使して公平かつ効率的な当番表ローテーションを組む具体的な方法を、初心者の方にも分かりやすく解説していきます。

この記事を読むことで、以下の点が明確になるでしょう。

・平日のみを自動で表示するカレンダーの基本的な作り方がわかります。

・担当者リストから当番を自動的に割り当てる関数の仕組みを学べます。

・個々の担当者の休みを考慮してローテーションを組む応用的な方法を理解できます。

・日替わりだけでなく、週替わりの当番表に応用するためのヒントが得られます。

エクセルで当番表のローテーションに関数を使った基本設計

ここでは、効率的でメンテナンス性の高い当番表を作成するための、基本的な設計と考え方、そしてそのために必要となるエクセルの主要な機能について解説していきます。公平なローテーションを実現するためには、しっかりとした土台作りが不可欠です。まずは当番表の基礎となるカレンダーの作成方法から、ローテーションさせる担当者リストの準備、そして自動化の核となる各種関数の役割まで、一つ一つのステップを順を追って詳しく見ていきましょう。

当番表の土台となるカレンダーの作成方法

WORKDAY関数で平日のみの日付リストを作る

担当者リストの準備と名前の定義

エクセルで当番表の曜日を自動で表示する

ローテーションの核となるMOD関数の役割

ROW関数とCOUNTA関数でリストを循環させる

当番表の土台となるカレンダーの作成方法

自動化された当番表を作成する上で、全ての基礎となるのが日付が入力されたカレンダー部分です。ここが正確に作成できていなければ、その後の関数も正しく機能しません。最もシンプルなカレンダーの作成方法は、開始日を一つ入力し、そこから連続した日付を生成していくアプローチです。例えば、シートのB2セルに当番表の開始日となる日付、仮に「2025/7/1」と入力します。次に、その一つ下のB3セルに「=B2+1」という数式を入力してください。この数式は、一つ上のセルの日付に1日加えるという意味になります。あとは、B3セルのフィルハンドル(セルの右下にある小さな四角)をマウスで掴み、必要な日数分だけ下方向へドラッグします。これだけの操作で、連続した日付が自動的に入力され、カレンダーの土台が完成します。この段階ではまだ土日祝日も含まれていますが、まずはベースとなる日付リストを作成することが重要です。また、初期設定のままだと日付がシリアル値という数値で表示されてしまうことがあります。その場合は、日付が入力されている列を選択し、右クリックから「セルの書式設定」を開き、「表示形式」タブの「日付」カテゴリから、「3月14日」や「m”月”d”日”」といった見やすい形式を選択することで、体裁を整えることができます。

WORKDAY関数で平日のみの日付リストを作る

日々の当番を土日祝日を除いた平日のみに限定したい場合、エクセルのWORKDAY(ワークデー)関数が非常に強力な味方となります。この関数は、指定した開始日から数えて、特定の営業日数だけ後(または前)の日付を自動的に計算して返してくれます。その際、土曜日と日曜日は自動的に除外されるため、手作業で平日を選び出す手間を完全に省くことが可能です。WORKDAY関数の基本的な構文は=WORKDAY(開始日, 日数, [祝日])となります。三つ目の引数である[祝日]は任意ですが、ここに祝日をまとめたリストのセル範囲を指定することで、祝日も除外した、より正確な「エクセルで平日のみの表」を作成できます。具体的な使い方としては、まずシートのどこかに祝日の一覧表を作成しておきます。次に、カレンダーの開始日となるセル(例:A2セル)に=WORKDAY("2025/6/30", 1, 祝日リストの範囲)のように入力します。これは、2025年6月30日の次の平日、つまり7月1日を求める式です。その下のセルには=WORKDAY(A2, 1, 祝日リストの範囲)と入力し、これをオートフィルで下にコピーしていくだけで、土日と祝日を自動的にスキップした平日のみの日付リストが簡単に完成します。

担当者リストの準備と名前の定義

日付のリストが準備できたら、次にローテーションさせる担当者の一覧表を作成します。このリストが、誰を当番に割り当てるかの元データとなります。作業のしやすいように、カレンダーとは別の列、例えばE列の上から順番に、担当者の名前を一人ずつ入力していきましょう(例:E1セルに田中、E2セルに佐藤、E3セルに鈴木…)。この担当者リストは、後の工程で何度も関数から参照することになります。その際に「E1:E5」のように直接セル範囲を指定することも可能ですが、担当者の人数が増減するたびに数式を修正する必要があり、メンテナンスが煩雑になりがちです。そこで活用したいのが「名前の定義」という機能です。これは、特定のセル範囲に分かりやすい名前を付ける機能で、数式の可読性と管理性を飛躍的に向上させます。手順は簡単で、まず作成した担当者名のセル範囲(E1からE5までなど)を選択します。次に、エクセルのリボンから「数式」タブをクリックし、「定義された名前」グループの中にある「名前の定義」を選択します。「新しい名前」のダイアログボックスが表示されたら、「名前」の欄に「担当者リスト」のような任意の分かりやすい名前を入力して「OK」をクリックします。これにより、今後数式の中で「E1:E5」と入力する代わりに「担当者リスト」という名前が使えるようになり、数式の意味が直感的に理解しやすくなります。

エクセルで当番表の曜日を自動で表示する

作成した当番表の日付がそれぞれ何曜日にあたるのかを表示させることで、表全体の視認性は格段に向上します。日付データさえあれば、曜日を自動で表示させるのは非常に簡単で、主にTEXT(テキスト)関数が利用されます。TEXT関数は、数値や日付を、指定した表示形式の文字列に変換する関数です。曜日を表示させたいセルに、=TEXT(日付が入力されているセル, "aaaa")という数式を入力します。例えば、日付がB2セルに入力されている場合、C2セルに=TEXT(B2, "aaaa")と入力すると「火曜日」のように表示されます。書式コードの「aaaa」を「aaa」に変えれば「火」という一文字の形式に、「ddd」にすれば英語表記の「Tue」になります。このように、用途に応じて柔軟に表示を切り替えられるのがTEXT関数の利点です。また、曜日を数値として扱いたい場合にはWEEKDAY(ウィークデー)関数も有効です。=WEEKDAY(B2, 2)と入力すると、月曜日を1、日曜日を7とする数値を返します。この数値を利用して、後述する条件付き書式と組み合わせれば、「もし曜日が6(土曜日)以上ならセルの色を変える」といった設定も可能になり、「エクセルで当番表の曜日」をより視覚的に分かりやすく表現することができるようになります。

ローテーションの核となるMOD関数の役割

担当者を公平に、かつ自動で循環させるローテーションの仕組みを構築する上で、中心的な役割を果たすのがMOD(モッド)関数です。この関数は一見すると地味ですが、その性質を理解すると非常に応用範囲が広いことが分かります。MOD関数は、指定した数値をある数値(除数)で割った際の「余り」を求める関数です。その構文は=MOD(数値, 除数)と非常にシンプルです。例えば、=MOD(7, 5)という数式は、7を5で割った余りである「2」を返します。このMOD関数がローテーションでなぜ重要かというと、連続する数値を固定の除数で割っていくと、その余りが周期的に繰り返されるからです。例えば、担当者が5人いるとします。この「5」を除数として、0、1、2、3、4、5、6…という連続した数値を割っていくと、その余りは「0, 1, 2, 3, 4, 0, 1, …」という規則的なサイクルを描きます。この0から4までを繰り返す周期的な数値を、担当者リストのインデックス(何番目の人かを示す番号)として利用することで、リストの先頭から末尾までを順番に指名し、末尾まで行ったらまた先頭に戻る、という理想的なローテーションを簡単に実現できるのです。このMOD関数こそが、「エクセルでローテーションに関数」を使う際のまさに心臓部と言えるでしょう。

ROW関数とCOUNTA関数でリストを循環させる

前述のMOD関数を最大限に活用し、よりスマートでメンテナンス性の高いローテーションを実現するために、ROW(ロウ)関数とCOUNTA(カウントエー)関数を組み合わせることが非常に有効です。ROW関数は、引数を省略して=ROW()と入力すると、その数式が入力されているセルの「行番号」を返すというシンプルな関数です。これをMOD関数で割る「数値」として利用することで、上から下へ「1, 2, 3, …」と自動的に増加する連番生成器の役割を果たさせることができます。例えば、1行目から始まる場合はROW(A1)とすることで、どこに数式をコピーしても1から始まる連番が得られます。一方、COUNTA関数は、指定した範囲に含まれる空白でないセルの個数を数える関数です。これを担当者リストの範囲に適用(例:=COUNTA(担当者リスト))することで、担当者の総人数を自動で取得できます。これにより、将来的に担当者が増えたり減ったりしても、数式内の除数を手で修正する必要が一切なくなります。これらを組み合わせた具体的な数式は=MOD(ROW(A1)-1, COUNTA(担当者リスト))となります。この数式を下にコピーしていくと、0から始まり、担当者の人数-1までの範囲で循環する、ローテーションに最適な連番が自動的に生成されるのです。

エクセルで当番表のローテーションに関数を組み合わせる実践

ここでは、前のセクションで学んだ一つ一つの関数を実際に組み合わせて、機能的で実用的な当番表を完成させるための、具体的な数式の構築方法を解説していきます。担当者リストから名前を自動で引用するINDEX関数を主軸に据え、個人の休みを考慮に入れる応用テクニックや、日替わりではなく週替わりのローテーションへ展開する方法まで、より実践的な内容へと踏み込んで、その仕組みと作り方を詳しく見ていきましょう。

INDEX関数で担当者を自動で割り当てる

休みを考慮した当番表ローテーションの組み方

COUNTIF関数で休み希望者をスキップする

エクセルで当番表を週替わりに設定する方法

条件付き書式で見やすいカレンダーに仕上げる

エクセルでの当番表ローテーション作成のまとめ

INDEX関数で担当者を自動で割り当てる

これまでに準備してきた様々なパーツ、つまりWORKDAY関数で作成した平日のみの日付リスト、名前を定義した担当者リスト、そしてMOD関数などで生成した循環する連番、これら全てを統合し、最終的に当番の名前を表示させる役割を担うのがINDEX(インデックス)関数です。INDEX関数は、指定したセル範囲の中から、指定した行番号や列番号に該当するセルの値を正確に取り出す機能を持っています。その基本的な構文は=INDEX(範囲, 行番号, [列番号])です。この「範囲」に「担当者リスト」を指定し、「行番号」にMOD関数などで作成した循環する連番を与えることで、当番の自動割り当てが実現します。具体的な数式は次のようになります。=INDEX(担当者リスト, MOD(ROW(A1)-1, COUNTA(担当者リスト))+1)。この数式を当番を表示させたい最初のセルに入力し、フィルハンドルで下までコピーするだけで、担当者リストの名前が上から順番に、平日の日付に対して自動的に割り振られていきます。ここで数式の末尾に「+1」が付いているのがポイントです。MOD関数が生み出す連番は0から始まりますが、INDEX関数が要求する行番号は1から始まるため、その差を調整するために1を加えています。この一本の数式で、基本的な「エクセルで当番表のローテーションに関数」を適用した表が完成します。

休みを考慮した当番表ローテーションの組み方

基本的なローテーション表が完成したら、次なるステップは、より実用性を高めるために個人の休み希望を反映させることです。この「エクセルで当番表のローテーションに休み」の要素を組み込むことで、当番表は単なる自動化ツールから、チームの実情に即した運営ツールへと進化します。最も簡単な方法は、関数で自動割り当てされた当番表を一度作成した上で、休み希望の該当日については手動で担当者を変更したり、空欄にしたりすることです。しかし、これでは自動化のメリットが半減してしまいます。理想的なのは、休み希望を関数が自動で認識し、その担当者をスキップして次の人に当番を割り当てる仕組みを構築することです。これを実現するための第一歩として、まず「休み希望表」を別途作成する必要があります。この表には、最低でも「日付」と「休む人の名前」の2つの情報が含まれていなければなりません。例えば、G列に休みの日付、H列にその日に休む担当者の名前をリストアップしていきます。この休み希望表をマスターデータとして参照し、当番を割り当てる数式の中に、「もし割り当てられる人がその日に休み希望を出していれば、その割り当てをスキップする」という条件分岐を組み込んでいくことが、次の目標となります。

COUNTIF関数で休み希望者をスキップする

担当者の休みを考慮してローテーションを組むロジックは、これまでの関数よりも少し複雑になりますが、COUNTIF(カウントイフ)関数などを用いることで実現可能です。COUNTIF関数は、指定した範囲内で特定の条件に一致するセルの個数を数える関数です。これを利用して、「休み希望表の中に、今日の日付と、今日当番になる予定の人の組み合わせが存在するかどうか」をチェックします。もし存在すれば(つまりCOUNTIFの結果が1以上なら)、その人は休みなので当番をスキップさせる、という考え方です。しかし、単純にスキップするだけでは、その日の当番が空欄になったり、ローテーションの順番がずれてしまったりと、新たな問題が発生します。より洗練された方法としては、出勤可能なメンバーだけで構成される、その日限定の「仮想の担当者リスト」を作成し、その中から順番に割り当てていくという高度なアプローチが考えられます。これはFILTER関数(Microsoft365で利用可能)や、作業列を複数使った複雑な数式の組み合わせで実現できますが、設定の難易度は高くなります。よりシンプルに実現したい場合は、当番の公平性が多少崩れることを許容し、休みの人には「休み」と表示させ、次の出勤日にその人からローテーションを再開させるような、運用ルールと組み合わせた数式を検討することも一つの選択肢となるでしょう。

エクセルで当番表を週替わりに設定する方法

これまでの解説は日替わりの当番表を前提としてきましたが、業務内容によっては「エクセルで当番表を週替わり」に設定したいというニーズも多く存在します。週単位で担当者を固定することで、業務の引き継ぎをスムーズにしたり、特定の週の責任者を明確にしたりするメリットがあります。このような週替わりのローテーションを実現するために役立つのが、WEEKNUM(ウィークナム)関数です。WEEKNUM関数は、指定した日付が、その年の第何週目に相当するのかを数値で返してくれる関数です。この「週番号」をローテーションの基準として利用します。具体的な数式の組み立て方としては、まずMOD関数で割る対象を、日々の連番(ROW関数)から週番号(WEEKNUM関数)に置き換えます。例えば、=INDEX(担当者リスト, MOD(WEEKNUM(日付セル, 2), COUNTA(担当者リスト))+1)のような形が基本となります。WEEKNUM(日付セル, 2)とすることで、週の始まりを日曜日ではなく月曜日として計算させることができます。ただし、このままでは年をまたぐ際に週番号がリセットされてしまいローテーションが途切れるため、WEEKNUM(日付セル) - WEEKNUM(当番表の開始日のセル)のように、開始日からの経過週数を計算し、それをローテーションの基準にすると、より安定した運用が可能になります。これにより、同じ週に属する日付には、常に同じ担当者が自動で割り当てられるようになります。

条件付き書式で見やすいカレンダーに仕上げる

関数を駆使して機能的な当番表のロジックを完成させたら、最後の仕上げとして「条件付き書式」を活用し、視覚的に分かりやすく、美しい表に整えましょう。どれだけ高機能な表であっても、見た目が分かりにくければ使う人にとってストレスの原因になりかねません。まず、基本的なテクニックとして、土曜日や日曜日の行全体に自動で色を付ける設定が挙げられます。これにより、この当番表が平日のみを対象としていることが一目で明確になります。設定方法は、当番表の範囲全体を選択し、「ホーム」タブの「条件付き書式」から「新しいルール」を選択。「数式を使用して、書式設定するセルを決定」を選び、=WEEKDAY($B2, 2)>5のような数式を入力します(B列に日付が入力されていると仮定)。$B2のように列を固定することで、行全体に書式が適用されます。このルールに背景色を設定すれば完了です。さらに、担当者ごとにセルの色を自動で変更する設定も非常に有効です。例えば、「指定の値を含むセルだけを書式設定」のルールを使い、「セルの値が」「次の値に等しい」「=”田中”」の場合に青色、「="佐藤"」の場合に緑色、といったルールを担当者の人数分作成します。これらの工夫を凝らすことで、「エクセルで当番表のローテーションが組まれたカレンダー」の使いやすさと見栄えを、飛躍的に向上させることができるでしょう。

エクセルでの当番表ローテーション作成のまとめ

今回はエクセルで平日のみの当番表ローテーションを組む方法についてお伝えしました。以下に、本記事の内容を要約します。

・エクセル関数を活用すれば無料で高機能な当番表の自動作成が可能である

・全ての基本となるのは正確な日付リストであり、まずこれを作成する

・WORKDAY関数は土日祝日を除外した平日のみのリスト生成に極めて有効

・担当者リストは「名前の定義」機能で管理すると数式の可読性が向上する

・日付に対応する曜日はTEXT関数やWEEKDAY関数で簡単に自動表示できる

・MOD関数は割り算の余りを利用し、担当者を周期的に循環させる仕組みの核となる

・ROW関数は連番生成に、COUNTA関数は担当者数の動的なカウントに貢献する

・INDEX関数はMOD関数が生成した番号を基にリストから担当者名を引用する

・これらの基本関数を組み合わせることで自動ローテーション表は完成する

・実用性を高めるには休み希望リストを別途作成し、数式から参照する

・COUNTIF関数などで休み希望を確認し、当番をスキップするロジック構築も可能

・週替わりの当番表はWEEKNUM関数で取得した週番号を基準に作成する

・条件付き書式で土日に色付けしたり担当者ごとに色分けしたりすると視認性が高まる

・関数の組み合わせは一見複雑だが、各関数の役割を分解して理解すれば応用は難しくない

・一度テンプレートを構築すれば、開始日を変更するだけで半永久的に使用できる

エクセルの関数を効果的に組み合わせることによって、手作業では非常に煩雑で間違いの起こりやすい当番表の作成と管理を、劇的に効率化することができます。この記事で紹介した様々な関数やテクニックをヒントに、ぜひご自身の職場やチームの運用ルールに合致した、オリジナルの当番表作成に挑戦してみてください。公平でスムーズな当番ローテーションは、日々の業務の円滑化はもちろん、チーム全体の協力体制の強化にも繋がることでしょう。

CTAサンプル

これはCTAサンプルです。
内容を編集するか削除してください。