ExcelのWORKDAY関数の使い方|営業日後の日付を祝日込みで自動計算

スポンサーリンク

「納品日っていつになりますか?」と聞かれて、カレンダーを指で数えた経験はありませんか。土日や祝日を飛ばしながら数えるのは、地味に面倒ですよね。しかも数え間違いがあると、取引先に迷惑がかかることも。

ExcelのWORKDAY関数を使えば、そんな営業日計算を一発で自動化できます。祝日リストを渡すだけで、土日はもちろん祝日もスキップして正確な日付を返してくれます。この記事では、基本の書き方から実務で使えるコピペ数式まで、まるごと解説していきます。

WORKDAY関数とは?営業日後の日付を自動で求める関数

WORKDAY関数は「ワークデイ」と読みます。その名のとおり、仕事の日(=営業日)を基準に日付を計算する関数です。

具体的には、指定した開始日からN営業日後(または前)の日付を返します。土日は自動でスキップされます。さらに第3引数で祝日リストを渡せば、祝日も除外して計算してくれます。

たとえば「2026年4月1日の3営業日後」を求めるとしましょう。4月2日(木)→ 4月3日(金)→ 4月6日(月)と数えて、結果は4月6日です。土日の4日・5日は自動で飛ばしてくれます。

対応バージョンはExcel 2007以降です。Microsoft 365やExcel for the webでも使えます。

WORKDAY関数の書式と引数

基本構文は次のとおりです。

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

引数は3つあり、最後の「祝日」だけ省略できます。

第1引数(開始日):起点となる日付

営業日を数え始める起点の日付を指定します。セル参照やDATE関数で日付を渡すのが一般的です。

ポイントは、開始日自体はカウントに含まれないことです。「4月1日の1営業日後」は4月1日ではなく、4月2日になります。

第2引数(日数):加算する営業日数

何営業日分ずらすかを数値で指定します。

  • 正の数を指定すると、未来方向に計算します
  • 負の数を指定すると、過去方向に計算します
  • 0を指定すると、開始日そのものを返します

「5営業日前」を求めたいときは -5 と指定すればOKです。

第3引数(祝日):除外する日付リスト(省略可)

土日以外に休みとしたい日付のリストを指定します。省略すると、土日のみを休日として計算します。

祝日リストは、日付が縦に並んだセル範囲で渡します。別シートにまとめておくと管理しやすくなります。詳しい作り方はこの記事の後半で解説します。

引数必須/省略可指定する内容入力例
開始日必須起点となる日付A2, DATE(2026,4,1)
日数必須ずらす営業日数3, -5, B2
祝日省略可除外する日付リスト$D$2:$D$20, 祝日テーブル[日付]

基本の使い方|N営業日後の日付を求める

祝日なしで3営業日後を求める

まずは祝日なしのシンプルな例から見てみましょう。セルA2に開始日「2026/4/1」が入っている場合、3営業日後を求めるにはこう書きます。

=WORKDAY(A2, 3)

結果は「2026/4/6」(月曜日)です。4/4(土)と4/5(日)を飛ばして計算してくれます。

結果が「46112」のようなシリアル値で表示されることがあります。そのときはセルの表示形式を「日付」に変更してください。セルを右クリック →「セルの書式設定」→「日付」で直ります。

祝日リストを使って祝日を除外する

次に祝日も除外してみましょう。D2:D5に祝日が入っている場合はこうなります。

=WORKDAY(A2, 3, $D$2:$D$5)

祝日リストのセル範囲は、数式をコピーしてもずれないよう絶対参照($マーク付き)にするのがポイントです。

たとえば4月中に祝日が含まれていれば、その日もスキップして3営業日後を求めてくれます。

実務3大ユースケース|コピペ数式テンプレート

WORKDAY関数が真価を発揮するのは、実務の定型業務です。ここでは、そのまま使える3つの数式テンプレートを紹介します。

発注日から納品期日を自動計算する

発注日(A2)から5営業日後を納品期日として算出する数式です。

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

受注管理表に組み込めば、発注日を入力するだけで納品期日が自動で埋まります。手作業で数える必要がなくなるので、入力ミスも防げます。

請求書の支払期日(月末締め翌月N営業日)を求める

「月末締め・翌月5営業日後払い」のような取引条件はよくありますよね。請求日(A2)の翌月初日を起点にする場合はこう書きます。

=WORKDAY(DATE(YEAR(A2),MONTH(A2)+1,1)-1, 5, 祝日!$A$2:$A$30)

ちょっとむずかしく見えますが、やっていることはシンプルです。DATE(YEAR(A2),MONTH(A2)+1,1)-1 で月末日を求めています。そこから5営業日後を計算しているだけです。

月をまたぐ計算でも、WORKDAY関数が土日・祝日を自動で処理してくれます。

申請受付から回答期限を算出する

社内の申請ワークフローで「受付から10営業日以内に回答」というルールがある場合です。

=WORKDAY(B2, 10, 祝日!$A$2:$A$30)

B2が受付日です。10営業日後の日付が自動で入るので、期限管理がラクになります。WORKDAY関数はこのように日数部分をセル参照にすることもできます。部署ごとに回答期限が違う場合でも、柔軟に対応できます。

祝日リストの作り方と年度更新の手順

WORKDAY関数を正しく使うには、祝日リストの管理が欠かせません。ここでは、おすすめの管理方法を紹介します。

祝日リストを別シートに作成する方法

祝日リストは「祝日」という名前の専用シートにまとめるのがおすすめです。手順は次のとおりです。

  1. 新しいシートを作り、シート名を「祝日」にする
  2. A列に「日付」、B列に「祝日名」の見出しを入れる
  3. A2以降に祝日の日付を入力していく

日本の祝日は内閣府のWebサイトで公式に公開されています。そこから日付をコピーして貼り付けると確実です。

会社独自の休日(創立記念日、年末年始の休業日など)も、同じリストに追加してください。WORKDAY関数は、リストに含まれる日付をすべて休日として扱います。

テーブル機能(Ctrl+T)でテーブル化しておくと、行を追加したときに数式の参照範囲が自動で広がります。構造化参照を使えば、数式は次のように書けます。

=WORKDAY(A2, 5, 祝日テーブル[日付])

絶対参照の管理が不要になるので、メンテナンスがぐっとラクになります。

年度が変わったときの更新手順

年度が替わったら、祝日リストの更新を忘れないようにしましょう。手順はシンプルです。

  1. 内閣府サイトで翌年の祝日一覧を確認する
  2. 祝日シートに新年度の日付を追記する
  3. 会社独自の休日があれば、あわせて追加する

テーブル化していれば、行を追加するだけで完了です。過去年度の祝日は、削除せずそのまま残しておいて問題ありません。WORKDAY関数は計算に関係ない日付を無視してくれます。

毎年4月に「祝日リスト更新」のリマインダーを設定しておくと、更新忘れを防げます。

営業日関連4関数の使い分けフロー

Excelには営業日に関する関数が4つあります。「どれを使えばいいの?」と迷ったら、次のフローで判断してみてください。

  • 求めたいのは「日付」か「日数」か?
    • 日付を求めたい → WORKDAY系
    • 日数を数えたい → NETWORKDAYS系
  • 休日は「土日」だけか、カスタムしたいか?
    • 土日でOK → 標準版(WORKDAY / NETWORKDAYS)
    • カスタムしたい → INTL版(WORKDAY.INTL / NETWORKDAYS.INTL)

WORKDAY:N営業日後の日付を求める

この記事で解説している関数です。開始日からN営業日後の日付を返します。土日を休日として扱い、祝日リストも指定できます。Excel 2007以降で使えます。

WORKDAY.INTL:休日パターンをカスタムする

WORKDAY関数の拡張版です。「土日」ではなく「水曜・日曜が休み」のような独自の休日パターンを設定できます。サービス業やシフト制の職場で重宝します。

=WORKDAY.INTL(A2, 5, "0010001", 祝日!$A$2:$A$30)

第3引数に7文字の文字列を指定します。月〜日の順で「1=休日、0=稼働日」を表します。上の例は水曜と日曜が休みのパターンです。Excel 2010以降で使えます。

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

2つの日付の間にある営業日の日数を数える関数です。「プロジェクトの稼働日数は何日?」といった計算に使います。詳しくはNETWORKDAYS関数の解説記事をご覧ください。

NETWORKDAYS.INTL:休日パターンを指定して日数を数える

NETWORKDAYS関数の拡張版です。WORKDAY.INTLと同じく、休日パターンをカスタマイズして営業日数を数えられます。Excel 2010以降で使えます。

関数名求めるもの休日設定対応バージョン
WORKDAY日付土日固定Excel 2007〜
WORKDAY.INTL日付カスタム可Excel 2010〜
NETWORKDAYS日数土日固定Excel 2007〜
NETWORKDAYS.INTL日数カスタム可Excel 2010〜

多くの場合はWORKDAYとNETWORKDAYS関数の2つで事足ります。休日パターンを変えたい場面が出てきたら、INTL版を思い出してください。

よくあるエラーと対処法

WORKDAY関数で遭遇しやすいエラーは3パターンあります。原因と修正方法を押さえておきましょう。

#VALUE!が出るときの原因と修正方法

#VALUE!エラーは、引数に正しくない値が渡されたときに発生します。よくある原因は次の3つです。

  • 開始日が文字列になっている — セルに「4月1日」とテキストで入力していませんか。Excelが日付として認識できる形式(2026/4/1など)で入力してください。どうしてもうまくいかないときは、DATE関数=DATE(2026,4,1) のように指定すると確実です。
  • 日数に数値以外が入っている — 第2引数に空白セルや文字列を指定していないか確認してください。
  • 祝日リストに無効な値が混ざっている — 祝日リストの中に、日付ではないデータ(文字列や空白セル)が含まれていると発生します。リスト内をチェックしてみてください。

#NUM!が出るときの原因と修正方法

#NUM!エラーは、計算結果が有効な日付の範囲を外れたときに発生します。Excelが扱える日付の下限は1900年1月1日です。日数に非常に大きな負の値を指定して、1900年より前の日付になってしまうと発生します。日数の値が正しいか確認してください。

祝日が反映されないときのチェックポイント

数式はエラーにならないのに、祝日がスキップされない。そんなときは次の3点を確認してください。

  • 祝日リストの範囲がずれている — 数式をコピーしたときに、祝日の範囲が相対参照でずれていませんか。$D$2:$D$30 のように絶対参照にしましょう。
  • 祝日の日付がシリアル値になっていない — 見た目は日付でも、文字列として入力されている場合があります。セルを選択して、数式バーにシリアル値(数字)が表示されるか確認してください。DATEVALUE関数で変換する方法もあります。
  • 年度が古い祝日リストを使っている — 2025年の祝日リストで2026年の計算をしていませんか。祝日リストに該当年の日付が含まれているか確認しましょう。

まとめ

WORKDAY関数は、営業日ベースの日付計算を自動化する関数です。この記事のポイントを振り返りましょう。

  • 書式は =WORKDAY(開始日, 日数, [祝日])
  • 土日を自動でスキップし、祝日リストも指定できる
  • 日数を負の値にすれば、過去方向の計算も可能
  • 祝日リストは別シートで管理し、絶対参照またはテーブルで参照する
  • 「日付」を求めるならWORKDAY、「日数」を数えるならNETWORKDAYS関数

納品期日や支払期日の計算を手作業で行っている方は、ぜひWORKDAY関数に置き換えてみてください。一度数式を組めば、あとは日付を入力するだけで自動計算されます。

Excelの日付計算をもっと深く知りたい方は、Excelの日付計算完全攻略もあわせて読んでみてください。EDATE関数で月単位の移動、WEEKDAY関数で曜日判定と、組み合わせの幅が広がります。

タイトルとURLをコピーしました