「納品日は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 | 火 | カウントに含まない |
| 1 | 4/2 | 水 | 営業日 |
| 2 | 4/3 | 木 | 営業日 |
| 3 | 4/4 | 金 | 営業日 |
| — | 4/5 | 土 | スキップ |
| — | 4/6 | 日 | スキップ |
| 4 | 4/7 | 月 | 営業日 |
| 5 | 4/8 | 火 | 営業日 |
結果は 2025/4/8(火) です。土日がきちんとスキップされていますね。
結果を日付形式で表示する
WORKDAY関数の結果がセルに「45750」のような数値で表示されることがあります。これはスプレッドシートが日付をシリアル値で管理しているためです。
日付として表示するには、次の手順で表示形式を変更します。
- 結果が入ったセルを選択する
- メニューの「表示形式」→「数字」→「日付」を選ぶ
これで「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(木) です。
| カウント | 日付 | 曜日 |
|---|---|---|
| 1 | 4/2 | 水 |
| 2 | 4/3 | 木 |
| 3 | 4/4 | 金 |
| 4 | 4/7 | 月 |
| 5 | 4/8 | 火 |
| 6 | 4/9 | 水 |
| 7 | 4/10 | 木 |
祝日リストを使えば、ゴールデンウィークなどの連休も自動で考慮されます。毎回カレンダーを確認する手間がなくなりますよ。
マイナス値でN営業日前を出す
日数に負の値を指定すると、過去にさかのぼって営業日を数えられます。
たとえば、2025/4/1(火)から3営業日前を求める場合はこう書きます。
=WORKDAY("2025/04/01", -3)
| カウント | 日付 | 曜日 | 説明 |
|---|---|---|---|
| 起算日 | 4/1 | 火 | カウントに含まない |
| -1 | 3/31 | 月 | 営業日 |
| — | 3/30 | 日 | スキップ |
| — | 3/29 | 土 | スキップ |
| -2 | 3/28 | 金 | 営業日 |
| -3 | 3/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関数に任せてしまいましょう。
