WEEKDAY・WORKDAY関数の使い方|曜日と営業日の計算
WEEKDAY関数とWORKDAY関数は、曜日の判定と営業日の計算に使うExcelの関数です。WEEKDAY関数は日付の曜日を数値で返し、WORKDAY関数は土日や祝日を除いた営業日を計算します。スケジュール管理、納期計算、勤怠管理など、業務に欠かせない関数です。
各関数の基本構文
WEEKDAY関数
=WEEKDAY(シリアル値, [種類])
WORKDAY関数
=WORKDAY(開始日, 日数, [祝日])
WEEKDAY関数の引数
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| シリアル値 | 曜日を調べる日付 | 必須 |
| 種類 | 戻り値の形式を指定する数値 | 任意 |
WORKDAY関数の引数
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| 開始日 | 起算日となる日付 | 必須 |
| 日数 | 加算する営業日数(負の値で過去方向) | 必須 |
| 祝日 | 除外する祝日の日付リスト(セル範囲) | 任意 |
WEEKDAY関数の種類パラメータ
| 種類 | 日曜日 | 月曜日 | 火曜日 | 水曜日 | 木曜日 | 金曜日 | 土曜日 |
|---|---|---|---|---|---|---|---|
| 1(既定) | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 2 | 7 | 1 | 2 | 3 | 4 | 5 | 6 |
| 3 | 6 | 0 | 1 | 2 | 3 | 4 | 5 |
種類1が既定値で、日曜=1、土曜=7です。種類2は月曜始まりで、月曜=1、日曜=7です。
実践例1:曜日を日本語で表示する
WEEKDAY関数とCHOOSE関数を組み合わせて、日付の曜日を日本語で表示します。
=CHOOSE(WEEKDAY(A2), "日", "月", "火", "水", "木", "金", "土")
A2が「2026/06/20」(土曜日)の場合、結果は「土」です。
TEXT関数を使う方法もあります。
=TEXT(A2, "AAA")
結果は同様に「土」です。「AAAA」にすると「土曜日」になります。
実践例2:土日を判定する
日付が土日かどうかを判定し、平日と休日を区別します。
=IF(OR(WEEKDAY(A2)=1, WEEKDAY(A2)=7), "休日", "平日")
WEEKDAY関数の種類2を使うとよりシンプルに書けます。
=IF(WEEKDAY(A2, 2)>5, "休日", "平日")
種類2では月曜=1から日曜=7なので、6以上(土曜・日曜)が休日です。
実践例3:WORKDAY関数で営業日を計算
開始日から10営業日後の日付を求めます。
=WORKDAY(A2, 10)
A2が「2026/06/01」(月曜日)の場合、土日を除いた10営業日後の日付が返されます。結果は「2026/06/15」(月曜日)です。
祝日を考慮する場合は、第3引数に祝日リストを指定します。
=WORKDAY(A2, 10, D2:D10)
D2:D10に祝日の日付が入力されている場合、それらの日付も除外して営業日を計算します。
実践例4:2つの日付間の営業日数を求める
NETWORKDAYS関数を使って、2つの日付間の営業日数を計算します。
=NETWORKDAYS(A2, B2)
A2が「2026/06/01」、B2が「2026/06/30」の場合、6月中の営業日数(土日を除く)が返されます。
祝日を除外する場合は第3引数を追加します。
=NETWORKDAYS(A2, B2, D2:D10)
NETWORKDAYS.INTL関数
土日以外の曜日を休日にしたい場合は、NETWORKDAYS.INTL関数を使います。
=NETWORKDAYS.INTL(A2, B2, "0000011")
第2引数の文字列で、各曜日が休日かどうかを指定します。「0000011」は月曜から金曜を稼働日、土曜と日曜を休日にします。
水曜日と日曜日を休日にする場合は次のようにします。
=NETWORKDAYS.INTL(A2, B2, "0010001")
実践例5:条件付き書式で土日に色を付ける
WEEKDAY関数を条件付き書式で使い、カレンダーの土日に色を付ける例です。
条件付き書式のルールに以下の数式を設定します。
土曜日を青くする場合はこの数式を使います。
=WEEKDAY(A2)=7
日曜日を赤くする場合は次の数式を使います。
=WEEKDAY(A2)=1
これにより、日付データが入った範囲で土日が自動的に色分けされます。
よくあるエラーと対処法
#VALUE!エラー
日付として認識できない値を指定した場合に発生します。セルの値が正しい日付形式であることを確認してください。
WORKDAY関数で祝日が除外されない
祝日リストの日付がExcelの日付として正しく認識されていない場合があります。以下を確認してください。
- 祝日が文字列ではなく日付型で入力されているか
- 祝日の範囲指定が正しいか
- 空白セルが含まれていないか
土日以外の休業日パターン
WORKDAY関数は土日を休日として扱います。別の曜日を休日にしたい場合は、WORKDAY.INTL関数を使います。
=WORKDAY.INTL(A2, 10, "0000011")
第2引数の文字列は7文字で、月曜から日曜に対応し、1が休日、0が稼働日です。
祝日リストの管理
日本の祝日は年によって変動します(春分の日、秋分の日、振替休日など)。祝日リストを別シートにまとめて管理することをおすすめします。
祝日リストの管理方法として次のような対応が考えられます。
- 専用の「祝日」シートを作成し、年ごとの祝日を入力する
- 名前の定義で「祝日」という名前を付けて数式から参照しやすくする
- 年度の切り替え時に祝日リストを更新する
関連する日付関数
| 関数 | 用途 |
|---|---|
| WEEKDAY | 曜日を数値で返す |
| WORKDAY | n営業日後の日付を返す |
| WORKDAY.INTL | カスタム休日パターンでn営業日後を返す |
| NETWORKDAYS | 2日付間の営業日数を返す |
| NETWORKDAYS.INTL | カスタム休日パターンで営業日数を返す |
| TEXT | 曜日を文字列で返す(“AAA”など) |
Google スプレッドシートでの互換性
WEEKDAY関数、WORKDAY関数ともにGoogle スプレッドシートで利用可能です。WORKDAY.INTL関数やNETWORKDAYS.INTL関数もサポートされています。構文や動作はExcelとほぼ同一ですが、WEEKDAY関数の種類パラメータの選択肢が若干異なる場合があります。
まとめ
WEEKDAY関数とWORKDAY関数は曜日と営業日の計算に特化した関数です。
- WEEKDAY関数は日付の曜日を数値で返す
- WORKDAY関数は土日(と祝日)を除いた営業日を計算する
- NETWORKDAYS関数で2日付間の営業日数を求められる
- INTL版の関数でカスタム休日パターンに対応できる
- 祝日リストは別シートで一元管理するのがおすすめ
スケジュール管理や納期計算で欠かせない関数です。祝日リストと組み合わせて、正確な営業日計算を実現しましょう。