ExcelのWORKDAY関数は、開始日から土日と指定した祝日を除いて、指定した営業日数だけ前または後の日付を返します。請求期限、発送予定日、作業完了予定日の計算に向きますが、「開始日を1日目として数える」と考えると一日ずれやすく、会社独自の休日や土日以外の週末を登録しないと実務の営業日になりません。基本構文はWORKDAY(start_date, days, [holidays])です。日付を文字列で直書きせず、日付セルまたはDATE関数を使い、祝日表と週末ルールを先に設計します。
WORKDAYが返すのは日付シリアル値
Microsoftの説明では、WORKDAYは開始日の前後にある指定数の稼働日を表す数値を返します。Excelは日付を連続したシリアル値として保持するため、結果セルが「45200」のような数値に見える場合は、式が壊れたのではなく表示形式が標準または数値になっています。「ホーム」の表示形式を日付へ変更し、元の値を文字列へ変換しないようにします。
開始日には日付が入ったセルを参照するのが基本です。固定日を式へ入れる必要があるならDATE(2026,7,16)のようにDATE関数を使います。"2026/7/16"のような文字列は地域設定や入力形式で解釈が変わる可能性があります。CSVから読み込んだ日付が文字列なら、見た目だけで判断せずISNUMBERやセルの配置、データ型を確認して正規化します。
開始日は通常カウントに含まれない
WORKDAY(A2,1)は、A2の次に来る稼働日を返します。A2が平日でも、それを営業日1日目として同じ日を返す関数ではありません。daysが0なら、開始日が平日の場合は開始日、週末や祝日の場合は次の稼働日になる挙動を実データで確認します。「受付日を含む」「翌営業日から数える」など業務定義を文章化してから式を決めます。
たとえば金曜日を開始日として1営業日後を求めると、祝日指定がなければ通常は月曜日です。月曜日が祝日一覧に含まれれば火曜日になります。一方、「金曜日受付を1日目として3営業日目」という要件では、単純なWORKDAYのdays=3と一致しないことがあります。締切時刻を過ぎた受付は翌日扱い、当日扱いなどの条件も、IF関数で開始日を調整する前に担当部署へ確認します。
正の営業日数と負の営業日数を使い分ける
daysが正なら未来、負なら過去の営業日を返します。納品日の5営業日前を準備期限にするならWORKDAY(B2,-5,休日範囲)のようにします。0は開始日前後の稼働日判定にも使えますが、要件が「直前営業日」なら-1、「当日が休みなら次営業日」なら0というように意味が違います。式へ説明列を添え、正負を誤ってコピーしないようにします。
=WORKDAY(A2,10,$H$2:$H$30)
=WORKDAY(B2,-5,$H$2:$H$30)
daysに小数を指定すると、Microsoftの注意どおり整数部分へ切り捨てられます。半日や時間単位のSLAをWORKDAYだけで表すことはできません。0.5営業日、営業時間9時から17時、昼休み、タイムゾーンを扱う場合は、日時と勤務時間帯を分けた設計が必要です。小数が入力されるセルにはデータの入力規則を設定し、整数以外を警告する方が意図しない切り捨てを防げます。
祝日は実在する日付の一覧として管理する

第3引数holidaysには、除外したい日付が入ったセル範囲、または日付シリアル値の配列を指定できます。日本の祝日だけでなく、会社休日、年末年始、拠点休業日も業務上の非稼働日なら一覧へ含めます。祝日名の文字列ではなく日付列を参照します。一覧に見出しや空白、文字列日付が混ざっていないか確認します。
祝日表は別シートで「日付」「名称」「対象拠点」「更新元」「確認日」を管理すると監査しやすくなります。同じ日付が重複しても二日分として数えるわけではありませんが、重複は保守ミスの兆候なので取り除きます。毎年同じ月日とは限らない祝日を、年だけ置換して自動生成しないようにします。次年度の公表前に仮日を確定値として使わず、更新担当者と締切を決めます。
土日以外の休日はWORKDAY.INTLを使う
WORKDAYは標準で土曜日と日曜日を週末として除外します。日曜・月曜休み、金曜・土曜休み、日曜だけ休み、交代勤務などではWORKDAY.INTLを使います。構文はWORKDAY.INTL(start_date, days, [weekend], [holidays])で、weekendへMicrosoftが定める番号または7文字の週末文字列を指定できます。
7文字文字列では月曜日から日曜日までを順に表し、1を非稼働日、0を稼働日とします。たとえば土日休みは"0000011"です。文字数や曜日順を誤ると正常な日付に見える誤答になるため、番号指定も含め公式表と照合します。部署ごとに休日が違うなら、週末コードを設定表から参照し、式へ意味不明な定数を埋め込まないようにします。24時間365日稼働の業務定義も別途確認します。
テーブルと名前定義で祝日範囲を自動拡張する
祝日を毎年追加する運用では、固定範囲$H$2:$H$30だと追加行が範囲外になる可能性があります。祝日一覧をExcelテーブルにして祝日表[日付]のような構造化参照を使うか、動的な名前定義を検討します。テーブルは行追加を取り込みやすく、列名で式の意味を読み取れます。
=WORKDAY([@開始日],[@営業日数],祝日表[日付])
=WORKDAY.INTL([@開始日],[@営業日数],[@週末コード],祝日表[日付])
ただし、テーブルの集計行や空白以外の注記が日付列へ入るとエラー要因になります。祝日名称や根拠URLは別列へ置き、日付列の型を統一します。外部ブックの祝日表を参照すると、ファイル移動、権限、リンク更新で計算できない場合があります。重要な締切表では、更新元を管理された同一ブックまたは承認済みデータ接続にし、リンク切れを定期確認します。
WORKDAYとNETWORKDAYSを使い分ける

WORKDAYは「何営業日後・前の日付」を求める関数です。二つの日付の間に営業日が何日あるかを数える目的にはNETWORKDAYS、週末を変更して数えるならNETWORKDAYS.INTLを使います。似た名前でも入力と結果が逆です。納期日を算出する列と、実績営業日数を集計する列を分け、片方の結果をもう片方で検算できます。
検算では、開始日、結果日、祝日範囲、週末定義が両関数で同じか確認します。開始日と終了日を数える規則は関数ごとに読み、業務の「初日算入」「末日算入」と一致させます。一日差が出たときに+1や-1をその場で足すのではなく、どの日を含めるべきかを日付一覧へ展開して確認します。補正値にはコメントを付け、担当者が変わっても理由が分かるようにします。
#VALUE!と#NUM!を原因別に確認する
Microsoftの説明では、引数が有効な日付でない場合は#VALUE!、開始日と日数の計算が有効な日付範囲を超える場合は#NUM!が返ります。まず開始日セルと祝日列が数値の日付か、daysが数値か、参照先がずれていないかを確認します。IFERRORで空白にすると締切未計算を見落とすため、原因が解決するまでエラーを表示します。
数式がエラーでなくても、祝日表の対象年が古い、週末コードが違う、開始日が時刻付き、1900/1904日付システムが異なるブック間で値をコピーした、という論理誤りは残ります。結果列の表示形式だけを直して解決としません。代表日として平日、金曜、祝日前、年末年始、うるう日、負の日数、0日を用意し、期待値を人が作ったカレンダーと照合します。
締切表では時刻・タイムゾーンを別に扱う
WORKDAYが返すのは日付であり、営業終了時刻やタイムゾーンを自動判断しません。結果へTIME(17,0,0)を加えて17時とする方法はありますが、短縮営業、サマータイム、拠点ごとの時差、祝日前の特別時刻は別ルールです。国際業務では「どの拠点のカレンダーか」「締切時刻は何時で、どのタイムゾーンか」を列として保持します。

現在時刻を使うTODAYやNOWは再計算で変わるため、監査が必要な受付日には確定値を記録します。自動化で日付を書き込む場合も、入力元、実行時刻、タイムゾーン、祝日表の版をログへ残します。最終的な法定期限、支払期限、契約期限は数式だけで確定せず、適用法令や契約、担当部署のカレンダーを確認します。Excelは計算を支援しますが、休日の正当性を保証しません。
年度更新と境界値テストを運用に組み込む
営業日計算は作成直後より翌年に誤りが出やすいため、祝日表の年度、最終更新日、対象拠点を見える位置へ表示します。新年度分を追加したら、前年末から年始、連休、月末、年度末を含むテストケースを再計算します。計算列だけを値貼り付けすると祝日更新が反映されないため、確定値にする場合は確定日と元の式を別途保存します。

共有ブックでは、祝日表の編集権限を担当者へ限定し、利用者は参照だけにします。変更履歴で追加・修正・削除と根拠を残し、主要な締切が変わった場合は関係者へ通知します。数式監査では、開始日、days、holidays、weekendの参照範囲を一覧化し、古い固定範囲や別年度シートを検出します。年度更新後に少なくとも一人が独立検算する運用が安全です。
確認チェックリスト
- 開始日が文字列ではなくExcelの日付値になっているか
- 開始日を数えるかどうかとdaysの正負を業務定義で確認したか
- 祝日範囲に会社休日・拠点休日と正しい年度を含めたか
- 土日以外の週末ならWORKDAY.INTLを選んだか
- 週末番号または7文字コードを公式表と照合したか
- 平日、週末、祝日、年末年始、0日、負の日数をテストしたか
- 締切時刻、タイムゾーン、法定・契約上の定義を別に確認したか

コメント