スプレッドシートのWORKDAY関数で営業日後の日付を計算する方法

スポンサーリンク

「納品日は5営業日後でお願いします」と言われて、カレンダーを指折り数えた経験はありませんか。土日を飛ばしながら数えるのは意外と手間ですし、祝日を見落とすと期限を間違えてしまいます。スプレッドシートのWORKDAY関数を使えば、営業日ベースの日付計算を一発で自動化できます。

この記事では、WORKDAY関数の基本から祝日の扱い、実務で役立つ応用テクニックまでまとめて解説します。

スプレッドシートのWORKDAY関数とは?

WORKDAY関数(読み方: ワークデイ)は、指定した開始日からN営業日後(または前)の日付を返す関数です。名前は「Work(仕事)+ Day(日)」が由来で、その名のとおり仕事の日を数えてくれます。

ポイントは次の2つです。

  • 土日を自動でスキップして営業日だけを数える
  • 祝日リストを指定すれば、祝日も飛ばしてくれる

納期・回答期限・支払期日など、「営業日ベースで○日後」を求めたい場面で活躍します。

なお、スプレッドシートは日本の祝日を自動で認識しません。祝日を考慮したい場合は、自分でリストを用意して引数に渡す必要があります。

WORKDAY関数の書き方(構文と引数)

基本構文

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

引数は3つで、3つ目の祝日だけが省略可能です。

各引数の意味

引数必須/省略可内容
開始日必須起算日となる日付。この日自体はカウントに含まれません
日数必須数える営業日の数。正の値で未来、負の値で過去を指定します
祝日省略可営業日から除外したい日付のリスト

戻り値はシリアル値(日付を表す数値)です。そのままだと「45750」のような数字が表示されます。表示形式を日付に変更する必要があります。この手順はあとで詳しく説明しますね。

祝日リストの作り方・指定方法

祝日の指定には3つのパターンがあります。

パターン1: 省略する

祝日を考慮しなくてよい場合は、第3引数を省略します。土日だけをスキップして計算されます。

=WORKDAY("2025/04/01", 5)

パターン2: セル範囲で指定する

シートに祝日一覧を作り、その範囲を指定します。実務ではこの方法がいちばん管理しやすいです。

=WORKDAY("2025/04/01", 5, E2:E17)

たとえばE列に2025年の祝日を入力しておけば、まとめて除外できます。元日・成人の日・建国記念の日など年16日分をリストにしましょう。

パターン3: 配列で直接書く

祝日が少ない場合は、数式内に直接書く方法もあります。

=WORKDAY("2025/04/01", 5, {"2025/04/29","2025/05/05"})

ただし祝日が増えると数式が長くなります。基本はセル範囲での指定がおすすめです。

WORKDAY関数の基本的な使い方

N営業日後の日付を出す

まずはもっともシンプルな例です。2025年4月1日(火曜日)から5営業日後を求めてみましょう。

=WORKDAY("2025/04/01", 5)

計算の流れを確認します。

カウント日付曜日説明
起算日4/1カウントに含まない
14/2営業日
24/3営業日
34/4営業日
4/5スキップ
4/6スキップ
44/7営業日
54/8営業日

結果は 2025/4/8(火) です。土日がきちんとスキップされていますね。

結果を日付形式で表示する

WORKDAY関数の結果がセルに「45750」のような数値で表示されることがあります。これはスプレッドシートが日付をシリアル値で管理しているためです。

日付として表示するには、次の手順で表示形式を変更します。

  1. 結果が入ったセルを選択する
  2. メニューの「表示形式」→「数字」→「日付」を選ぶ

これで「2025/04/08」のように表示されます。

もう一つの方法として、TEXT関数(数値を書式指定で文字列に変換する関数)を使う手もあります。

=TEXT(WORKDAY("2025/04/01", 5), "yyyy/mm/dd")

この書き方なら、表示形式を手動で変えなくても最初から日付として表示されます。

スプレッドシートWORKDAY関数の実践的な使い方・応用例

見積書の回答期限を自動計算する

見積書に「発行日から7営業日以内にご回答ください」と書くケースを考えます。発行日がA2セル、祝日リストがE2:E17にあるとしましょう。

=WORKDAY(A2, 7, E2:E17)

A2が2025/4/1(火)の場合、祝日がなければ結果は 2025/4/10(木) です。

カウント日付曜日
14/2
24/3
34/4
44/7
54/8
64/9
74/10

祝日リストを使えば、ゴールデンウィークなどの連休も自動で考慮されます。毎回カレンダーを確認する手間がなくなりますよ。

マイナス値でN営業日前を出す

日数に負の値を指定すると、過去にさかのぼって営業日を数えられます。

たとえば、2025/4/1(火)から3営業日前を求める場合はこう書きます。

=WORKDAY("2025/04/01", -3)
カウント日付曜日説明
起算日4/1カウントに含まない
-13/31営業日
3/30スキップ
3/29スキップ
-23/28営業日
-33/27営業日

結果は 2025/3/27(木) です。

「入金日から3営業日前までに請求書を送る」といったルールがある場合に便利です。

TODAY関数と組み合わせて動的に算出する

開始日にTODAY関数(今日の日付を返す関数)を使うと、常に「今日からN営業日後」を自動計算できます。

=WORKDAY(TODAY(), 5, E2:E17)

ファイルを開くたびにTODAY関数が更新されます。日付を手入力する必要がありません。タスク管理シートの期限列などに設定しておくと便利ですよ。

EDATE関数(月単位で日付を加減する関数)と組み合わせれば、「来月末から5営業日後」のような計算も可能です。

=WORKDAY(EDATE(TODAY(), 1), 5, E2:E17)

よくあるエラーと対処法

WORKDAY関数で遭遇しやすいトラブルをまとめました。

数値が表示される(45750 など)

これはエラーではなく、表示形式の問題です。セルの表示形式を「日付」に変更すれば解決します。先ほど紹介したTEXT関数を使う方法でもOKです。

#VALUE! エラーが出る

開始日や祝日に、日付として認識できない値が入っている可能性があります。次の点を確認してください。

  • 日付が文字列になっていないか(先頭にアポストロフィがないか)
  • 祝日リストに空白以外の不正な値がないか
  • 日数に数値以外が入っていないか

#NUM! エラーが出る

有効な日付を生成できない場合に発生します。日数が極端に大きい値になっていないか確認しましょう。

祝日が反映されない

祝日リストのセル範囲がずれていないか確認してください。祝日の日付の表示形式が「書式なしテキスト」になっていると、日付として認識されません。祝日セルの表示形式も「日付」にしておきましょう。

WORKDAY関数とNETWORKDAYS関数の違い・使い分け

WORKDAY関数と似た名前の関数に、NETWORKDAYS関数があります。NETWORKDAYS関数(ネットワークデイズ)は、2つの日付間の営業日数を数える関数です。

この2つは「入力と出力が逆」の関係です。

関数入力出力使いどころ
WORKDAY開始日 + 日数日付「5営業日後は何日?」
NETWORKDAYS開始日 + 終了日日数「この期間は何営業日?」

「納品まで何営業日あるか」を知りたいならNETWORKDAYS関数を使います。「5営業日後の納品日はいつか」ならWORKDAY関数の出番です。

NOTE

土日以外の曜日を休日にしたい場合は WORKDAY.INTL という拡張版があります。たとえば「金曜・土曜が休み」といったケースに対応可能です。通常の日本企業では土日休みが多いので、基本はWORKDAY関数で十分ですよ。

まとめ

WORKDAY関数の使い方を振り返ります。

  • 基本構文: =WORKDAY(開始日, 日数, [祝日])
  • 土日を自動スキップし、N営業日後(または前)の日付を返す
  • 祝日は省略可能。セル範囲で一覧を渡すのが実務向き
  • 結果がシリアル値で表示されたら、表示形式を「日付」に変更する
  • 日数にマイナスを指定すれば営業日前も計算できる
  • TODAY関数との組み合わせで、常に最新の日付を自動算出できる
  • 営業日数を数えたい場合はNETWORKDAYS関数を使う

納期管理や期限計算でカレンダーを指折り数える作業は、WORKDAY関数に任せてしまいましょう。

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