2026年9月15日

4直3交代のシフト表をエクセルで作る方法(数式1つで自動化)

毎月、先月のファイルをコピーして日付を直していませんか。 その作業は数式1つでなくせます。ここでは実際にエクセルで動作を確認した数式と、 数式すら書かずに済ませる方法を紹介します。

先に結論:2つの方法があります

方法向いている人手間
① ツールで作ってエクセルで開く 数式を触りたくない。とにかく今月の表が欲しい 1分
② エクセルに数式を組む 自社の様式に組み込みたい。仕組みを自分で持ちたい 15分(最初だけ)

①は4直3交代 シフト表 自動作成ツールで年月を選び、 「エクセル用に保存」を押すだけです。ダブルクリックでエクセルが開き、そのまま使えます。

この記事の本題は②の数式の組み方です。 一度組めば、翌月も翌年も、日付を変えるだけで正しい表が出ます。

4直3交代の仕組みをおさらい

4直3交代は、4つの班が「日勤2日 → 準夜2日 → 夜勤2日 → 休み2日」の8日周期を、 2日ずつずれて回す形です。詳しくは4直3交代とは?にまとめています。

数式で作るときに大事なのはこの1点だけです。

「ある日に、A班が周期の何日目にいるか」が決まれば、全部の日・全部の班が計算で出せる。

この「ある日」を基準日と呼びます。エクセルでは、基準日を1つのセルに入れておき、 すべての数式がそこを参照する形にします。

数式の組み方(手順)

手順1:表の骨組みを作る

まずこの形で表を作ります。

ABCDEHI
1日付A班B班C班D班基準日2026/9/7
22026/9/7
32026/9/8
4

手順2:A班の数式を入れる

B2(A班の最初の日)にこの数式を入れます。

=CHOOSE(MOD(A2-$I$1+0,8)+1,"日勤","日勤","準夜","準夜","夜勤","夜勤","休み","休み")

意味はこうです。

$I$1 のドル記号は「コピーしてもこのセルを指し続ける」という意味です。ここを忘れると下にコピーしたときにずれます。

手順3:B班〜D班は「ずらす数」を変えるだけ

他の班は、A班より周期が2日ずつ遅れています。数式の +0 の部分を変えるだけです。

数式(2行目)
A班(B2)=CHOOSE(MOD(A2-$I$1+0,8)+1,"日勤","日勤","準夜","準夜","夜勤","夜勤","休み","休み")
B班(C2)=CHOOSE(MOD(A2-$I$1+2,8)+1,"日勤","日勤","準夜","準夜","夜勤","夜勤","休み","休み")
C班(D2)=CHOOSE(MOD(A2-$I$1+4,8)+1,"日勤","日勤","準夜","準夜","夜勤","夜勤","休み","休み")
D班(E2)=CHOOSE(MOD(A2-$I$1+6,8)+1,"日勤","日勤","準夜","準夜","夜勤","夜勤","休み","休み")

手順4:下にコピーする

B2〜E2を選んで、右下の小さな四角をつかんで下へ引っ張ります(オートフィル)。 月末まで引っ張れば完成です。

実際に動かすとこうなります(基準日 2026/9/7 の例)。

日付A班B班C班D班
9/7日勤準夜夜勤休み
9/8日勤準夜夜勤休み
9/9準夜夜勤休み日勤
9/10準夜夜勤休み日勤
9/11夜勤休み日勤準夜
9/12夜勤休み日勤準夜
9/13休み日勤準夜夜勤
9/14休み日勤準夜夜勤
9/15日勤準夜夜勤休み

横に見ると、どの日も日勤・準夜・夜勤・休みが1つずつ並んでいます。 8日たつと最初に戻ります。この数式は実際にエクセルで動かして確認したものです。

翌月はどうするか

A列の日付を変えるだけです。A2に翌月の1日を入れれば、下の日付も数式も全部ついてきます。 基準日(I1)は変える必要がありません。何年先でも正しく計算されます。

ここが「先月のファイルをコピーして直す」やり方との決定的な違いです。 コピー方式だと、月をまたぐときに周期がずれていないか毎回確認が要ります。 数式方式は基準日から計算しているので、ずれようがありません。

色をつける(条件付き書式)

文字だけだと見にくいので、勤務ごとに色をつけます。

  1. B2〜E32(表の範囲)を選ぶ
  2. 「ホーム」→「条件付き書式」→「セルの強調表示ルール」→「文字列」
  3. 「夜勤」と入れて、色を選ぶ(濃い青など)
  4. 同じ手順で「準夜」「休み」にも色をつける

夜勤だけ濃い色にしておくと、自分の班の夜勤がいつか一目で分かります。

12日周期・16日周期の場合

「日勤3日 → 準夜3日 → 夜勤3日 → 休み3日」の12日周期なら、数式の2か所を変えます。

=CHOOSE(MOD(A2-$I$1+0,12)+1,"日勤","日勤","日勤","準夜","準夜","準夜","夜勤","夜勤","夜勤","休み","休み","休み")

16日周期なら、16 と +0, +4, +8, +12 です。

5直3交代の場合

5つの班で回す場合は、周期10日・休み4日が一般的です。

=CHOOSE(MOD(A2-$I$1+0,10)+1,"日勤","日勤","準夜","準夜","夜勤","夜勤","休み","休み","休み","休み")

5直3交代の年間休日は約146日と、4直より大幅に多くなります。 その分、人員は25%多く必要です。詳しくは4直3交代とは?で比較しています。

よくあるつまずき

「#VALUE!」と出る

A列の日付が「文字」として入っている可能性があります。 セルを選んで「ホーム」→「数値」の欄が「文字列」になっていたら、「日付」に変えてから入れ直してください。

全部の班が同じ勤務になる

ずらす数(+0, +2, +4, +6)を変え忘れています。B〜D班の数式をもう一度見てください。

実際の勤務表と合わない

基準日(I1)が間違っています。「A班が日勤の1日目だった日」を入れてください。 日勤2日目の日を入れると、全部が1日ずれます。

下にコピーしたら基準日がずれた

$I$1 のドル記号が抜けています。I1 のままコピーすると、行ごとに参照先がずれていきます。

数式を書きたくない人へ

ここまで読んで「面倒だな」と思ったら、それが正直な感想だと思います。 この記事に書いたことをそのまま実装したのが、下のツールです。

年月と勤務パターンを選ぶだけで表ができ、「エクセル用に保存」を押せばそのままエクセルで開けます。 基準日も1回合わせれば保存されるので、翌月は開くだけです。 4直3交代のほか、12日周期・16日周期・5直3交代・2交代にも対応しています。

数式の仕組みを知ったうえで使うと、「なぜ基準日が要るのか」が腑に落ちるはずです。