「納品日っていつになりますか?」と聞かれて、カレンダーを指で数えた経験はありませんか。土日や祝日を飛ばしながら数えるのは、地味に面倒ですよね。しかも数え間違いがあると、取引先に迷惑がかかることも。
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関数を正しく使うには、祝日リストの管理が欠かせません。ここでは、おすすめの管理方法を紹介します。
祝日リストを別シートに作成する方法
祝日リストは「祝日」という名前の専用シートにまとめるのがおすすめです。手順は次のとおりです。
- 新しいシートを作り、シート名を「祝日」にする
- A列に「日付」、B列に「祝日名」の見出しを入れる
- A2以降に祝日の日付を入力していく
日本の祝日は内閣府のWebサイトで公式に公開されています。そこから日付をコピーして貼り付けると確実です。
会社独自の休日(創立記念日、年末年始の休業日など)も、同じリストに追加してください。WORKDAY関数は、リストに含まれる日付をすべて休日として扱います。
テーブル機能(Ctrl+T)でテーブル化しておくと、行を追加したときに数式の参照範囲が自動で広がります。構造化参照を使えば、数式は次のように書けます。
=WORKDAY(A2, 5, 祝日テーブル[日付])
絶対参照の管理が不要になるので、メンテナンスがぐっとラクになります。
年度が変わったときの更新手順
年度が替わったら、祝日リストの更新を忘れないようにしましょう。手順はシンプルです。
- 内閣府サイトで翌年の祝日一覧を確認する
- 祝日シートに新年度の日付を追記する
- 会社独自の休日があれば、あわせて追加する
テーブル化していれば、行を追加するだけで完了です。過去年度の祝日は、削除せずそのまま残しておいて問題ありません。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関数で曜日判定と、組み合わせの幅が広がります。
