【Excel】WORKDAY関数で土日祝日を除いた営業日を計算する方法

この記事は約6分で読めます。

今回は、ExcelのWORKDAY関数を使って、土日や祝日を除いた営業日計算を行う方法を紹介します。

この記事は、Microsoft 365のExcel(Windows版)を前提に説明しています。WORKDAY関数は以前のバージョンのExcelやWeb版でも使える関数ですが、画面の表示などは環境によって異なる場合があります。

WORKDAY関数でできること

WORKDAY関数は、ある日付を起点にして、指定した日数だけ稼働日(営業日)を進めた日付、または戻した日付を求める関数です。ここでいう稼働日とは、土曜日と日曜日、そして自分で指定した祝日を除いた日のことです。

たとえば、次のような場面で役立ちます。

  • 受注日から5営業日後の発送予定日を求める
  • 請求書の発行日から一定の営業日後の期日を計算する
  • 作業の開始日から、必要な稼働日数を足して完了予定日を出す
  • 締め切り日から逆算して、何営業日前に準備を始めるかを決める

カレンダーを見ながら土日を数えて日付を出す作業は、手間がかかるうえに数え間違いも起きやすいものです。WORKDAY関数を使えば、日付を変えるだけで結果が自動的に計算されます。

WORKDAY関数の書式

WORKDAY関数の書式は次のとおりです。

=WORKDAY(開始日, 日数, [祝日])

  • 開始日(必須):計算の起点となる日付を指定します。
  • 日数(必須):開始日から数える稼働日の日数を指定します。正の数なら後の日付、負の数なら前の日付が求められます。
  • 祝日(省略可):稼働日から除きたい日付の一覧を指定します。日付が入ったセル範囲などを指定できます。

日数に小数を指定した場合は、小数点以下が切り捨てられます。

基本的な使い方

○営業日後の日付を求める

セルA2に開始日として「2026/10/1」が入力されているとします。5営業日後の日付を求めるには、次のように入力します。

=WORKDAY(A2,5)

2026年10月1日は木曜日なので、翌日の金曜日から数え始め、土日を飛ばして5営業日目にあたる日付が表示されます。

○営業日前の日付を求める

締め切り日から逆算したい場合は、日数にマイナスの値を指定します。セルB2に締め切り日が入っている場合、3営業日前の日付は次のように求められます。

=WORKDAY(B2,-3)

「締め切りの3営業日前までに下書きを提出する」といったスケジュールを立てるときに便利です。

結果が数値で表示されたときの対処

WORKDAY関数の結果は、Excel内部で日付を表すシリアル値という数値で返されます。そのため、セルの表示形式によっては「46300」のような数字が表示されることがあります。

その場合は、結果のセルを選択し、[ホーム]タブの[表示形式]から[短い日付形式]や[長い日付形式]を選ぶと、日付として表示されます。数値が表示されても計算自体は正しく行われているので、慌てずに表示形式を確認しましょう。

祝日や休業日を除いて計算する

WORKDAY関数は土日を自動的に除きますが、祝日は自動では判別しません。祝日や会社の休業日も除きたい場合は、3つ目の引数に祝日の一覧を指定します。

祝日リストの作り方

  1. ブック内に「祝日」などの名前のシートを用意します。
  2. 1つの列に、除外したい日付を1セルに1日ずつ入力します。
  3. 国民の祝日に加えて、年末年始や夏季休業などの会社独自の休みも同じ列に入力します。

日付は、Excelが日付として認識できる形で入力することが大切です。文字列として入力された日付は、正しく計算できない原因になります。

祝日リストを指定した数式

祝日シートのA2からA30に休日の一覧を入力した場合、数式は次のようになります。

=WORKDAY(A2,5,祝日!$A$2:$A$30)

祝日の範囲は絶対参照($付き)にしておくと、数式を下の行へコピーしても範囲がずれません。

名前を付けて数式を読みやすくする

祝日リストの範囲に「休日一覧」などの名前を付けておくと、数式が次のように短くなり、内容も分かりやすくなります。

=WORKDAY(A2,5,休日一覧)

また、休日リストをテーブルに変換し、数式でテーブルの列を参照するようにしておくと、新しい日付を追加したときに参照範囲が自動で広がるため、翌年分の休日を追加するときも数式を修正する手間が省けます。

土日以外が休みの場合はWORKDAY.INTL関数を使う

WORKDAY関数は「土曜日と日曜日」を休みとして扱います。定休日が日曜日だけの職場や、平日に定休日がある店舗などでは、WORKDAY.INTL関数を使うと休みの曜日を指定できます。

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

3つ目の引数[週末]には、休みの曜日を表す番号を指定します。主な番号は次のとおりです。

  • 1(または省略):土曜日と日曜日
  • 2:日曜日と月曜日
  • 11:日曜日のみ
  • 12:月曜日のみ
  • 17:土曜日のみ

たとえば、日曜日だけが休みの場合は次のように入力します。

=WORKDAY.INTL(A2,5,11,休日一覧)

7桁の文字列で休みの曜日を自由に指定する

[週末]には、「0」と「1」を7つ並べた文字列も指定できます。左から月曜日、火曜日……日曜日の順に対応し、「1」が休み、「0」が稼働日を表します。

  • “0000011”:土曜日と日曜日が休み
  • “0010001”:水曜日と日曜日が休み

番号の一覧にない組み合わせでも指定できるため、定休日が2日に分かれている場合などに役立ちます。文字列は「”」で囲んで入力します。すべてを「1」にした文字列は指定できません。

営業日数を数えたいときはNETWORKDAYS関数

「日付を求める」のではなく、「2つの日付の間に営業日が何日あるか」を知りたい場合は、NETWORKDAYS関数を使います。

=NETWORKDAYS(開始日, 終了日, [祝日])

WORKDAY関数と同じように祝日の一覧を指定できるので、同じ休日リストを共有して使えます。休みの曜日を変えたい場合は、NETWORKDAYS.INTL関数を使います。

  • ○営業日後はいつか → WORKDAY関数
  • 期間中に営業日が何日あるか → NETWORKDAYS関数

目的に応じて使い分けると、スケジュール管理の表を作りやすくなります。

営業日計算で気を付けたいポイント

  • 開始日は数えない:WORKDAY関数は開始日の翌稼働日から数え始めます。「当日を1日目とする」ルールの職場では、日数を1つ減らすなどの調整が必要です。
  • 休日リストは毎年更新する:祝日の日付は年によって変わるものがあります。年度が変わる前に、翌年分の休日を追加しておきましょう。
  • 日付の入力形式をそろえる:文字列として入力された日付が混じると、エラーや意図しない結果の原因になります。
  • エラー値の意味を知っておく:引数に無効な日付を指定すると「#VALUE!」、計算結果が有効な日付の範囲を超えると「#NUM!」が表示されます。

まとめ

ExcelのWORKDAY関数を使うと、土日や祝日を除いた営業日計算を数式ひとつで行えます。今回紹介したポイントを整理します。

  • 書式は=WORKDAY(開始日, 日数, [祝日])で、日数をマイナスにすると前の日付を求められる
  • 結果が数値で表示されたら、表示形式を日付に変更する
  • 祝日や会社の休業日は休日リストを作り、絶対参照や名前、テーブルで管理する
  • 休みの曜日が土日以外ならWORKDAY.INTL関数で番号や7桁の文字列を指定する
  • 営業日の日数を数えたいときはNETWORKDAYS関数を使う

休日リストを一度整えておけば、発送日や期日の計算を何度でも同じルールで行えます。日々のスケジュール管理に取り入れてみてください。