doodle-on-web

自分で調べたことや、仕事の中で質問されたことなどをまとめています。

Excelで「5営業日後」を出す方法|WORKDAY関数で土日祝スキップ

スポンサーリンク

Excelで「◯営業日後」を出すなら =WORKDAY(開始日, 日数, 祝日リスト) です。土日は関数が自動で除外し、祝日は第3引数に渡したリストの分だけスキップします。つまり祝日対応には自前のリストが必須。土日以外が休みの会社は WORKDAY.INTL を使います。

納期表や請求スケジュールで =A2+5 と書くと、土日を含んだ「5日後」になり実際の稼働日とズレます。以下、実際の日付での検算、支払サイトの逆算、そして多くの人がハマる「開始日が休日だったとき」の挙動まで順に見ていきます。

なお、Excelの引数名は「祭日」ですが、中身は祝日+自社休業日をまとめた休業日リストです。本記事では以降「祝日リスト」で統一します。

Excelで「5営業日後」を出す方法|WORKDAY関数で土日祝スキップのサンプル ▲ Date and Time サンプル

WORKDAY関数の基本形

=WORKDAY(開始日, 日数, [祭日])
  • 開始日:起点となる日付(例:発注日)
  • 日数:加算する営業日数。負の値なら過去にさかのぼる
  • 祭日:休業日を並べたセル範囲。省略可能だが、省略すると祝日は営業日として数えられる

A2に発注日、E列に祝日リストがあるなら、5営業日後の納期は次のようになります。

=WORKDAY(A2, 5, $E$2:$E$30)

実際の日付で確かめる

A2(発注日) 数式 結果
2026/8/26(水) =WORKDAY(A2,5) 2026/9/2(水)
2026/9/14(月) =WORKDAY(A2,5) 2026/9/21(月)
2026/9/14(月) =WORKDAY(A2,5,$E$2:$E$30) 2026/9/24(木)

9/21・9/22が祝日にあたる週では、リストを渡すか渡さないかで結果が3日ずれます。「土日祝が自動で除外される」という思い込みが、そのまま納期の誤りになる場面です。

結果が「45900」のような数字になったら

WORKDAYが返すのは日付のシリアル値です。セルの表示形式が「標準」だと5桁の数字に見えます。該当セルを選んで Ctrl + 1 →「日付」を選べば正しく表示されます。数式が間違っているわけではありません。

WORKDAY(A2,0)が効かない理由

=WORKDAY(A2, 0) は、A2が土曜日でも土曜日をそのまま返します。 日数0では休日補正が働かないため、「休みなら翌営業日にずらす」という正規化には使えません。

正しくはこう書きます。

=WORKDAY(A2-1, 1, $E$2:$E$30)

前日から1営業日進めることで、A2が営業日ならA2自身、休日なら次の営業日が返ります。受付日を営業日ベースに揃えるときの定番です。逆に「直前の営業日」に丸めるなら =WORKDAY(A2+1, -1, $E$2:$E$30)

テンプレートに組み込むなら、A2が空欄のとき #NUM! にならないよう空判定を付けておくと安全です。

=IF(A2="", "", WORKDAY(A2-1, 1, $E$2:$E$30))

「◯営業日前」を逆算する

日数に負の値を入れるだけです。

=WORKDAY(締切日, -3, $E$2:$E$30)

これで「締切の3営業日前」。請求書の発送日や原稿の入稿日など、逆算スケジュールはこの形で自動化できます。

支払サイト(月末締め翌月末払い)を出す

WORKDAYの実務ニーズで最も多いのがここです。「翌月末、ただし休日なら前営業日」は EOMONTH と組み合わせます。

=WORKDAY(EOMONTH(A2,1)+1, -1, $E$2:$E$30)

EOMONTH(A2,1)+1 で翌々月1日を作り、そこから1営業日戻すことで、翌月末が土日祝なら自動的に前営業日が返ります。「翌月末払い、休日なら翌営業日」の会社なら =WORKDAY(EOMONTH(A2,1)-1, 1, 祝日) に変えます。

土日以外が休みならWORKDAY.INTL

水曜定休、日曜のみ休みといったケースはWORKDAY.INTLです(Excel 2010以降)。

=WORKDAY.INTL(開始日, 日数, [週末], [祭日])

よく使う週末番号は3つ

番号 休みになる曜日
1(省略時) 土曜・日曜
11 日曜のみ
14 水曜のみ

日曜のみ休みの会社で10営業日後なら =WORKDAY.INTL(A2, 10, 11) です。

このほか 2〜7 は連続2日休み(2=日月、3=月火、4=火水、5=水木、6=木金、7=金土)、12〜17 は単独休み(12=月、13=火、15=木、16=金、17=土)が割り当てられています。使う機会はほとんどないので、覚える必要はありません。

文字列で自由に指定する

番号にないパターンは7文字の文字列で指定します。月曜から日曜の順に並べ、1が休業日、0が営業日です。

  • "0000011" … 土日休み(番号1と同じ)
  • "0010001" … 水曜と日曜が休み
  • "0000001" … 日曜のみ休み
=WORKDAY.INTL(A2, 5, "0010001", $E$2:$E$30)

7文字すべてを1にする、0と1以外を混ぜると #NUM! になります。

祝日・会社休業日リストの作り方

祝日だけでなく、年末年始・夏季休業・創立記念日もまとめて入れられます。コツは3つ。

  1. 別シートに縦一列で並べる(横並びでも動くが管理しづらい)
  2. 必ず日付データとして入力する2026/1/1 の形で入れ、文字列にしない
  3. テーブル化するCtrl + T)。構造化参照 祝日[日付] にすれば、行を追加しても数式の範囲を直す必要がありません

祝日データは内閣府公開のCSVが確実ですが、貼り付けただけでは文字列になることが多い(Shift-JIS・YYYY/M/D 形式)。貼り付け後に「データ」→「区切り位置」で日付形式を指定するか、作業列に =DATEVALUE(A2) を作って日付化してください。手入力は振替休日の抜けが起きやすく、それが納期の1日ズレになります。

「土曜だが出勤日」の扱い

WORKDAY系は半休や振替出勤日を直接は扱えません。ただし振替出勤なら回避策があります。週末を "0000001"(日曜のみ休み)にして、通常の土曜をすべて祝日リストに入れる方法です。これで「原則土曜休み、ただし特定の土曜だけ出勤」を再現できます。土曜の一覧は日付を1つ作って +7 で連続コピーすれば数分でできます。

例外が多すぎて管理しきれない場合は、1行1日の営業日カレンダーを作り、フラグ列を立てて FILTER(Excel 365・2021以降)で取り出す方式に切り替えます。

期間内の営業日数を数える

加算ではなく「2つの日付の間に営業日が何日あるか」なら対の関数を使います。

=NETWORKDAYS(開始日, 終了日, [祭日])
=NETWORKDAYS.INTL(開始日, 終了日, [週末], [祭日])

NETWORKDAYSは開始日と終了日の両方を含めてカウントします。工数計算ではこの「両端を含む」仕様が前提です。INTL版はWORKDAY.INTL同様、Excel 2010以降で使えます。

よくあるエラーと対処

症状 原因と対処
祝日が除外されない 第3引数を渡し忘れている(最頻出)。祝日リストの範囲を必ず指定する
祝日リストを渡しても除外されない 祝日セルが文字列、または時刻を含んでいる。作業列に =INT(E2) を作りその列を参照(365/2021以降なら INT(E2:E30) を直接指定可)
#VALUE! 開始日や祝日が文字列。日付として入力し直すか DATEVALUE で変換
#NUM! 週末番号が範囲外、週末文字列が不正(7文字でない・全部1)、または開始日セルが空欄
範囲を追加したのに反映されない 祭日引数の範囲が固定のまま。テーブルの構造化参照に変更する

まとめ

  • 土日は自動除外だが、祝日はリストを渡さない限りスキップされない
  • 土日以外が休みなら WORKDAY.INTL の週末番号(1・11・14が主戦力)か "0010001" 形式の文字列
  • 支払サイトは =WORKDAY(EOMONTH(A2,1)+1, -1, 祝日) で「翌月末、休日なら前営業日」
  • WORKDAY(A2, 0) は補正されない。正規化は WORKDAY(A2-1, 1, 祝日)
  • 祝日リストはテーブル化+構造化参照で保守が楽になる
  • 日数を数えるなら NETWORKDAYS(両端を含む点に注意)

まずは自社の休業日リストを1枚作ることから。それさえあれば、納期・締切・支払日の計算は数式を触らずに回り続けます。


関連記事

あわせてチェック