エクセルで勤務表やシフト表を作るときは、日付と曜日を手入力すると更新漏れが起こりやすくなります。
月が変わるたびに表を作り直すのではなく、基準となる年月を入力するだけで日付、曜日、土日祝日の色分けまで連動する形にしておくと、作成作業と確認作業を大きく減らせます。
この記事では、スタッフ名と勤務区分を入力するシンプルな勤務表を例に、Excelの数式、表示形式、条件付き書式を使った作成方法を解説します。
勤務表を使い回せる形にするポイントは、年月の入力セルを1か所に集約することです。
日付はDATE関数、曜日はTEXT関数またはWEEKDAY関数、色分けは条件付き書式で設定すると、翌月以降も更新しやすくなります。
サンプルデータでは、1行目にヘッダーがあり、B1セルに対象年、C1セルに対象月を入力する構成で進めます。
エクセルで勤務表・シフト表を作成する基本手順

それではまず、毎月更新しやすい勤務表の土台づくりについて解説していきます。
| 氏名 | 1日 | 2日 | 3日 | 4日 |
|---|---|---|---|---|
| 佐藤 | 早 | 早 | 休 | 遅 |
| 鈴木 | 遅 | 休 | 早 | 早 |
| 高橋 | 休 | 早 | 遅 | 早 |
勤務表は、上部に年月、左端に氏名、横方向に日付を置く配置にすると、誰がいつ勤務するかを一覧で確認しやすくなります。
日付の行と曜日の行を分けておくと、土日祝日や休業日の確認もしやすくなります。
対象年月の入力セル
まず、B1セルに年、C1セルに月を入力する欄を用意します。
たとえばB1セルに2026、C1セルに9と入力すれば、2026年9月の勤務表として日付を自動表示できるようになります。
年と月を見出しの近くに置くことで、表をコピーして使う場合でも、どのセルを変更すればよいかが明確になります。
B1セルには年、C1セルには月を数値で入力します。
表示を整えたい場合は、D1セルに「=B1&”年”&C1&”月勤務表”」と入力すると、対象月が分かるタイトルを作れます。
入力ミスを減らすため、B1セルとC1セルだけ背景色を薄い黄色などにして、利用者が入力するセルだと分かるようにする方法も有効です。
月は1から12までに限定されるため、データの入力規則でリストを設定しておくと、13月のような誤入力を防げます。
日付・曜日・氏名の配置
勤務表の見出しは、A3セルに氏名、B3セル以降に日付を並べる形が基本です。
曜日は日付の下に表示するため、B4セル以降を曜日行として使います。
スタッフ名はA5セルから下方向へ入力し、勤務区分はB5セルから右方向へ記入します。
早番、遅番、日勤、夜勤、休み、有給などの記号は、職場で使う名称に合わせて統一しましょう。
記号の表記が「休」「休み」「公休」のように混在すると、勤務数を集計するときに数式が正しく働かないことがあります。
最初に入力ルールを決め、すべての行で同じ文字を使うことが大切です。
勤務区分の入力ルール
勤務区分を手入力する場合でも、入力規則のリストを使うと表記ゆれを抑えられます。
勤務区分を入力する範囲を選択し、データタブからデータの入力規則を開き、リストに「早,遅,日,夜,休,有」と登録します。
するとセルをクリックしたときに候補が表示されるため、キーボード入力の手間も少なくなります。
勤務表でよく使う区分の例です。
・早は早番
・遅は遅番
・日は日勤
・夜は夜勤
・休は公休
・有は有給休暇
勤務時間まで管理したい場合は、勤務区分とは別に開始時刻と終了時刻の表を作ると、勤務表本体が横に広がりすぎません。
【操作のポイント】勤務表の最初の段階では、デザインよりも入力セル、計算セル、見出しセルの役割を分けることが重要です。
日付を自動設定するDATE関数
続いては、対象年月から日付を横方向へ自動設定する方法を確認していきます。
| B1 年 | C1 月 | B3 数式 | 表示結果 |
|---|---|---|---|
| 2026 | 9 | =DATE($B$1,$C$1,COLUMN(A1)) | 2026/9/1 |
日付を文字として入力するのではなく、Excelが認識できる日付データとして数式で作ると、曜日表示や土日の判定へそのまま利用できます。
1日目の数式入力
B3セルには、次の数式を入力します。
=DATE($B$1,$C$1,COLUMN(A1))
DATE関数は、年、月、日を指定して日付を作る関数です。
$B$1は年が入力されたセルを固定参照し、$C$1は月が入力されたセルを固定参照しています。
COLUMN(A1)はA列の列番号である1を返すため、B3セルではその月の1日が表示されます。
年と月を絶対参照にしておけば、数式を右へコピーしても参照先がずれません。
セルに2026/9/1のように表示される場合は、数式が正しく入力できています。

オートフィルによる月末までの展開
B3セルに数式を入れたら、セル右下の小さな四角を右方向へドラッグして、AF3セル程度までコピーします。
COLUMN(A1)の参照は、右へコピーするごとにCOLUMN(B1)、COLUMN(C1)のように変化し、1、2、3と日付が増えていきます。
31日までの月にも対応させるなら、31日分の列まで数式を入れておくと便利です。
ただし、30日までの月や2月では、翌月の日付を表示しない工夫が必要になります。
そこで、表示用のセルにはIF関数とEOMONTH関数を組み合わせる方法が役立ちます。
=IF(DATE($B$1,$C$1,COLUMN(A1))<=EOMONTH(DATE($B$1,$C$1,1),0),DATE($B$1,$C$1,COLUMN(A1)),"")
EOMONTH関数は、指定した日付の月末日を返します。
この数式では、作成した日付が月末日以下なら日付を表示し、それより後なら空白を表示します。
2月や30日までの月でも不要な列が空白になるため、月ごとに表の構造を直す必要がありません。
日だけを見せる表示形式
勤務表では、セル内に2026/9/1と年月日をすべて表示すると横幅を取りすぎることがあります。
数式は日付のまま保持し、表示形式だけを変更して「1」「2」「3」のように日だけを見せる方法がおすすめです。
日付のセル範囲を選択し、セルの書式設定から表示形式をユーザー定義に変更します。
種類に「d」と入力すると日だけ、「dd」と入力すると01、02のように2桁で表示されます。
日付データそのものは変わらないため、曜日関数や条件付き書式も正確に使えます。
【操作のポイント】日付を文字列に変換せず、DATE関数の結果を日付データとして残すと、後の曜日判定と集計が安定します。
曜日を自動表示するTEXT関数とWEEKDAY関数

続いては、日付行を基にして曜日を自動表示する方法を確認していきます。
| 日付セル | 曜日セルの数式 | 表示結果 |
|---|---|---|
| B3 2026/9/1 | =TEXT(B3,"aaa") | 火 |
曜日を別行に表示すれば、勤務希望や休み希望を確認する際にカレンダーを開く手間が減ります。
TEXT関数による曜日表示
B4セルには、次の数式を入力します。
=TEXT(B3,"aaa")
TEXT関数は、数値や日付を指定した表示形式の文字列に変換する関数です。
「aaa」を指定すると月、火、水のような曜日の略称になり、「aaaa」を指定すると月曜日、火曜日のように表示されます。
勤務表では列幅を抑えやすい「aaa」が使いやすいでしょう。
数式を右方向へオートフィルすると、B3、C3、D3と参照先が変わり、各日付に対応した曜日が並びます。
曜日を手入力しないことで、うるう年や月替わりに伴う曜日のずれを防げます。
WEEKDAY関数による曜日番号
曜日を表示するだけならTEXT関数で十分ですが、土日を判定して色を変えるときはWEEKDAY関数も覚えておくと便利です。
WEEKDAY関数は日付から曜日番号を返す関数で、戻り値の種類を指定できます。
=WEEKDAY(B3,2)
第2引数を2にすると、月曜日が1、火曜日が2、水曜日が3、木曜日が4、金曜日が5、土曜日が6、日曜日が7になります。
平日と休日を分ける計算をしたいときは、「=WEEKDAY(B3,2)>=6」のような条件を利用できます。
表示用にはTEXT関数、判定用にはWEEKDAY関数という使い分けにすると理解しやすい構成です。
月をまたぐ日付の非表示
31列分の日付と曜日を用意した場合、短い月の後半には空白セルができます。
曜日行も空白にしたい場合は、B4セルに次の数式を入力します。
=IF(B3="","",TEXT(B3,"aaa"))
B3セルが空白なら曜日も空白にし、日付がある場合だけ曜日を表示する仕組みです。
月末以降に曜日だけが表示される状態を防げるため、見た目も自然になります。
勤務表では空白列を休みと誤認しないよう、存在しない日付は日付行も曜日行も空白にそろえることが大切です。
【操作のポイント】曜日を表示するセルは日付セルを参照するだけにして、年や月を直接入力する数式を重複させないようにします。
土日を色分けする条件付き書式
続いては、条件付き書式を使って土曜日を青、日曜日を赤で色分けする方法を確認していきます。
| 日付 | 曜日 | 設定する色 |
|---|---|---|
| 2026/9/5 | 土 | 青 |
| 2026/9/6 | 日 | 赤 |
曜日を色分けすると、休日や希望休の確認がしやすくなり、シフト作成時の見落としも減らせます。
日付行と曜日行だけでなく、勤務入力欄まで同じ列に薄い色を付けると、休日の列を直感的に把握できます。
土曜日用の数式ルール
まず、色分けしたい範囲を選択します。
日付、曜日、勤務入力欄をまとめて色分けするなら、B3からAF20のように表全体を選択します。
ホームタブの条件付き書式から新しいルールを選び、「数式を使用して、書式設定するセルを決定」をクリックします。
=WEEKDAY(B$3,2)=6
この数式は、各列の日付が土曜日なら真になる条件です。
B$3では行番号だけを固定しているため、適用範囲の各列でB3、C3、D3のように日付セルを自動判定できます。
書式ボタンから青系のフォント色、または薄い青の塗りつぶしを選択します。
条件付き書式の数式は、選択範囲の左上セルであるB3を基準に作ることが重要です。
日曜日用の数式ルール
次に同じ適用範囲に、日曜日用のルールを追加します。
=WEEKDAY(B$3,2)=7
書式は赤系のフォント色や薄い赤の塗りつぶしに設定します。
土曜日と日曜日を別のルールに分けることで、週末を見分けやすい勤務表になります。
祝日も別色にしたい場合は、別シートに祝日一覧を用意し、COUNTIF関数を条件付き書式で使う方法があります。
たとえば祝日一覧を「祝日」シートのA2からA30に入力した場合は、「=COUNTIF(祝日!$A$2:$A$30,B$3)>0」という条件で判定できます。
土日と祝日の色を分ける場合は、条件付き書式のルール管理で祝日ルールを上位に置くと、優先表示を調整しやすくなります。
Excel画面での条件付き書式設定
ここでは、条件付き書式の新しいルール画面を開き、土曜日の書式を設定する流れを確認しましょう。
画面では、条件付き書式の数式欄に「=WEEKDAY(B$3,2)=6」を入力し、書式ボタンから土曜日用の色を指定します。
赤枠で示した条件付き書式、新しいルール、数式入力欄が操作対象です。
適用先の範囲を確認してからOKを選ぶと、該当する土曜日の列だけが自動で色分けされます。
【操作のポイント】曜日セルの文字「土」「日」を直接判定するより、日付セルをWEEKDAY関数で判定するほうが、表示形式を変えてもルールが壊れにくくなります。
勤務数と休日日数を確認する集計
続いては、シフトを入力した後に勤務数や休日日数を確認する集計方法を解説していきます。
| 氏名 | 早番数 | 夜勤数 | 休日日数 |
|---|---|---|---|
| 佐藤 | 8 | 4 | 9 |
勤務表は作成するだけでなく、勤務回数や休日数が偏っていないかを確認するためにも使われます。
COUNTIF関数による勤務区分の集計
たとえば、佐藤さんの勤務入力範囲がB5からAF5までの場合、早番の数は次の数式で求められます。
=COUNTIF(B5:AF5,"早")
COUNTIF関数は、指定範囲内で条件に一致するセルの個数を数える関数です。
条件を「遅」「日」「夜」に変更すれば、それぞれの勤務区分の回数も集計できます。
集計用の数式は勤務表の右端に置くと、個人ごとの勤務バランスを横並びで確認できます。
数式を下へコピーすると、各スタッフの行に対応して自動的に範囲が変わります。
休日と有給の集計
休みと有給を別々に管理する場合も、COUNTIF関数を使えます。
=COUNTIF(B5:AF5,"休")
=COUNTIF(B5:AF5,"有")
休日数だけでなく有給取得日数も確認できるため、勤怠管理の補助資料として活用しやすくなります。
「休」と「有」を合計したいときは、2つのCOUNTIF関数を足し算します。
「=COUNTIF(B5:AF5,”休”)+COUNTIF(B5:AF5,”有”)」と入力すれば、休み扱いの日数をまとめて表示できます。
ただし、法定休日や代休などを区別して集計したい職場では、勤務区分の記号を増やして運用ルールも明確にしましょう。
入力漏れを見つける条件付き書式
シフトが未入力のまま残っているセルを見つけるには、空白セルに色を付ける条件付き書式が便利です。
勤務入力範囲を選択し、新しいルールで「セルの値が空白」を設定すると、未入力セルだけを目立たせられます。
ただし、月末以降の空白列まで色が付くと見づらくなります。
日付セルが空白ではなく、かつ勤務セルが空白の場合だけ色を付ける数式にすると実用的です。
=AND(B$3<>"",B5="")
この設定により、実在する日付の勤務欄だけを未入力として判定できます。
勤務表を提出する前に未入力セルを確認する仕組みを入れておくと、転記忘れの予防につながります。
【操作のポイント】集計は勤務区分の表記が統一されていることが前提です。入力規則とセットで導入すると、COUNTIF関数の精度が上がります。
見やすい勤務表に整える表示設定
続いては、印刷や共有の際にも見やすい勤務表に整える表示設定を確認していきます。
| 設定項目 | おすすめの設定 | 目的 |
|---|---|---|
| ウィンドウ枠の固定 | 氏名列と見出し行 | 横スクロール時の確認 |
| 印刷設定 | 横向き・横1ページ | 配布時の見やすさ |
勤務表は複数人で確認する資料になるため、数式だけでなく画面表示と印刷レイアウトも重要です。
ウィンドウ枠の固定
日付が31日分ある勤務表では、右側へスクロールすると氏名が見えなくなることがあります。
氏名列と見出し行を固定しておけば、どのスタッフの勤務内容を見ているかを常に確認できます。
B5セルを選択してから、表示タブのウィンドウ枠の固定を選び、「ウィンドウ枠の固定」を実行します。
この操作により、B5セルより上の行と左の列が固定されます。
固定位置を決めるときは、固定したい最終行の1つ下、固定したい最終列の1つ右にあるセルを選択します。
印刷タイトルと改ページの設定
勤務表を紙やPDFで共有する場合は、ページレイアウトタブから印刷設定を確認します。
横に長い表は、印刷の向きを横方向に変更すると、文字が極端に小さくなることを防ぎやすくなります。
さらに、拡大縮小印刷で横を1ページに設定すると、日付列が途中で分割されにくくなります。
複数ページになる場合は、印刷タイトルで氏名列や見出し行を指定すると、2ページ目以降にも見出しが印刷されます。
印刷プレビューで文字サイズと余白を確認してから配布すると、読みづらい勤務表になるリスクを下げられます。
色分けと凡例の設置
早番、遅番、夜勤などをセルの色で分ける場合は、表の上部または右側に凡例を置きます。
たとえば早番は薄い黄色、遅番は薄い青、夜勤は薄い紫、休みは薄い灰色のように、強すぎない色を選ぶと文字が読みやすくなります。
土日祝日の列にも色が付く場合は、勤務区分の色と重ならないよう、背景色よりフォント色を使う方法も検討しましょう。
色は情報を補助するための表示です。早、遅、夜、休などの文字も必ず残し、色だけで勤務内容を判断させないことが大切です。
色覚の違いがある人や、白黒で印刷する場面でも勤務内容を確認しやすくなります。
【操作のポイント】勤務表の見やすさは、列幅を狭くしすぎないこと、氏名列を固定すること、凡例を置くことの3点で大きく変わります。
まとめ エクセルで勤務表・シフト表を作成する方法(土日の色分け・曜日の日付自動設定)
エクセルで勤務表やシフト表を作るときは、対象年と対象月を入力するセルを用意し、DATE関数で日付を自動設定する形が基本です。
日付を日付データのまま保持しておけば、TEXT関数で曜日を表示し、WEEKDAY関数で土曜日と日曜日を正確に判定できます。
土日の色分けは条件付き書式で設定すると、年月を変更しただけで毎月のカレンダーに合わせて自動更新されます。
勤務区分には入力規則を使い、早番、遅番、夜勤、休みなどの表記を統一しましょう。
集計欄にはCOUNTIF関数を使うことで、スタッフごとの勤務数、夜勤数、休日日数を簡単に確認できます。
未入力セルを条件付き書式で目立たせる設定も、シフトの作成漏れを防ぐ実務的な方法です。
最後にウィンドウ枠の固定、印刷設定、凡例の表示を整えれば、画面上でも印刷後でも確認しやすい勤務表になります。
一度テンプレートとして完成させておくと、翌月は年と月を変更し、スタッフ名と勤務内容を更新するだけで使い続けられます。