数多くの業務で、開始日から終了日までの日数を計算したり、締切日を決めたりする際に、土曜・日曜を無視したいというニーズがあります。エクセルにはこの「土日除く日付計算」のための関数が標準で備わっていて、祝日の考慮からカスタム週末の設定まで自在に操作できるようになっています。この記事では単なる使い方だけでなく、現場でよくある応用例やエラー解決も含め、営業日の計算を正確かつ効率的にする方法を解説します。
エクセル 日付 計算 土日除く : NETWORKDAYS/NETWORKDAYS.INTL で営業日を数える
開始日と終了日の間にある営業日の数を計算したいとき、土曜・日曜を除外できるエクセルの関数が便利です。NETWORKDAYS 関数ではデフォルトで土曜・日曜を除外し、祝日リストを指定すればさらに除外できます。NETWORKDAYS.INTL を使えば、週末の曜日を自由に設定できるため、国や組織の週休制度に合わせて柔軟に対応可能です。
具体的には、NETWORKDAYS(start_date, end_date, [holidays]) が基本形です。祝日を含まない場合は第二引数だけで営業日数を返します。祝日の範囲を指定すればそれらの日も除外できます。また、土曜・日曜以外を週末とする特殊な設定をするには NETWORKDAYS.INTL を用い、weekend 引数でどの曜日を週末とするか数字か文字列で指定します。
NETWORKDAYS 関数の基本構文と使い方
NETWORKDAYS 関数は、開始日と終了日の間で**土曜・日曜を自動的に除いて**営業日数を返します。祝日を指定すれば、それも除かれます。関数の構文は `=NETWORKDAYS(start_date, end_date, [holidays])` です。祝日の引数を省略すると土日以外の週日すべてが営業日と扱われます。
また、開始日と終了日が同じ営業日なら営業日数は1日とみなされ、開始日が終了日より後なら負の値になります。入力が日付形式でないとエラーになるため、DATE 関数やセル参照で日付を指定するのが安全です。
NETWORKDAYS.INTL を使って非標準の週末を設定する
例えば週末が金曜・土曜の国や組織では、標準の土曜・日曜週末では対応できません。その場合に使うのが NETWORKDAYS.INTL です。この関数では、週末を指定する引数があり、数字コードまたは「0 と 1 の文字列」でどの曜日を週末とするかを定義できます。
数字コードには 1(サタサン)、2(サン月)、3(月火)などがあり、文字列では「0001100」(木曜・金曜週末など)といった形式で設定できます。祝日の引数も指定でき、土日以外の週末制度に対応可能です。
祝日を除いて正確に営業日を数えるポイント
祝日は国・地域・企業によって異なります。祝日のリストをセル範囲にして `holidays` 引数に入力することで、NETWORKDAYS や NETWORKDAYS.INTL は週末と祝日を両方除外した営業日数を返せます。リストは絶対参照にしてコピー操作でもずれないようにします。
また、祝日が範囲外や無効な日付形式だと #VALUE や #NUM エラーになります。祝日リストを DATE 関数などで生成するか、セルの書式を日付に設定することが重要です。
WORKDAY/WORKDAY.INTL を使って締切日を求める方法
営業日数を数える以外に、指定した営業日の数だけ先または後の日付を取得したい場面がよくあります。たとえば「開始日から 10 営業日後の納期」「受注から 5 営業日前を仕入れチェック日」といった用途です。WORKDAY 関数がそれに対応しています。さらにカスタム週末制度にも対応できるのが WORKDAY.INTL です。
構文は `=WORKDAY(start_date, days, [holidays])`。この関数では、開始日から指定した営業日数を加算し、その結果として締切日を返します。週末と祝日を除くため、週末が始まる日や祝日が複数重なると、結果が思わぬ日付になることもあります。
WORKDAY 関数の基本構成と特徴
WORKDAY 関数は、開始日 start_date と営業日数 days(正または負)を指定し、祝日を optional で與えることで、開始日から指定数の営業日だけ先または過去の日付を返します。days が正の場合は未来、負なら過去の日付です。祝日を指定すればその日も除外されます。
なお、開始日そのものは営業日として数えられません。例えば開始日が月曜日で days に 1 を指定したら、結果は火曜日になります。祝日を含める場合は、開始日+営業日数後の日が週末や祝日であれば、その次の営業日が結果になります。
WORKDAY.INTL で週末を自由に設定する
WORKDAY.INTL 関数は、WORKDAY の機能に加えて週末を定義する第3引数 weekend を持っています。この引数でどの曜日を週末とするかを数字や文字列で指定できます。数字の例として 1(標準の土曜・日曜)、2(日曜・月曜)、7(金曜・土曜)などがあります。文字列形式では「1000011」などで月曜開始の週の各曜日が週末かどうかを 0/1 で指定します。
また、祝日の引数も指定可能で、週末と合わせて除外対象になります。これにより、特殊な週休制度を採用する組織や国の締切計算に適しています。関数のエラー回避のために、weekend 引数に無効な値や文字列を入れないようにしましょう。
実務でよく使われる応用例
実際の業務では以下のような場面で WORKDAY や WORKDAY.INTL が活躍します。
- 契約の納期を営業日ベースで設定する
- プロジェクトマイルストーンを営業日単位で見積もる
- 見積もり提出期限を計算する
- 請求日から支払期日を営業日で回す
記録として祝日リストを定期的に更新し、週末制度に変更があれば weekend 引数を見直すことで、計算の誤差を防げます。組織の運用にあわせて関数を選び、誤った納期や数値になるのを防止してください。
だいたいこう使う:関数の比較表と選び方
複数の関数を使い分けることで、土日除く計算を正確に行えます。それぞれの関数がどのような用途・強みがあるかを比較して、自分の目的に合ったものを選ぶことが重要です。
以下に NETWORKDAYS, NETWORKDAYS.INTL, WORKDAY, WORKDAY.INTL を比較した表を示します。
| 関数 | 用途 | 特徴 |
|---|---|---|
| NETWORKDAYS | 開始日~終了日間の営業日数を数える | 土日固定除外、祝日リスト対応。週末制度を変更できない。 |
| NETWORKDAYS.INTL | 営業日数を数える(週末を自由設定) | 土日以外も週末にできる。祝日除外可。柔軟性高い。 |
| WORKDAY | 指定営業日数後の日付を求める(締切など) | 開始日から +n 営業日後。土日および祝日除外。週末固定(土日)。 |
| WORKDAY.INTL | 締切日等を +n 営業日後に求める(週末を自由設定) | 週末制度を設定可能。祝日対応。組織ごとに最適。 |
この比較により、たとえば日本の一般的な土曜・日曜週休+祝日ありの環境では NETWORKDAYS と WORKDAY の組み合わせで十分ですが、週末が異なる国や祝日が多いプロジェクトでは INTL 付きの関数が適します。
よくある間違いとエラーの回避策
営業日の計算で思わぬ結果になる原因は、入力データや関数の引数ミスがほとんどです。事前に知っておくことでトラブルを避けられます。以下は多くの人が直面する典型例とその対処法です。
日付形式が文字列になっている誤り
セルに入力した日付が文字列として扱われていると、関数は正しく認識できず #VALUE! エラーになることがあります。DATE 関数や日付書式設定を使い、セルの書式を「日付」にしてから入力するのが望ましいです。
祝日リストが重複していたり空白が混じっている問題
祝日リストに無効な日付や空白セル、重複があると、NETWORKDAYS や WORKDAY 関数での計算が誤ったりエラーになったりします。祝日範囲を絶対参照にすること、リストを整理することが大切です。
週末制度が異なる環境への対応忘れ
海外拠点や業界によっては週末が異なる日(例:金曜・土曜)であることがあります。標準の土日週末を前提にすると誤った営業日数や締切になりますので、そのような環境では INTL 関数を使って week end 引数を調整してください。
開始日と終了日の順序ミス
NETWORKDAYS で開始日が終了日より後の場合、負の値が返ります。意図しない順序で入力すると意図外の結果になるため、セル参照を使って自動的に min/max を判定したり、IF 関数で順序を整えると安全です。
まとめ
土日除く日付計算は、営業日ベースでスケジュール管理や納期設定をする上で欠かせない操作です。NETWORKDAYS/NETWORKDAYS.INTL を使えば開始日から終了日までの営業日数を正確に把握できますし、WORKDAY や WORKDAY.INTL を使えば指定した営業日後または前の日付を手軽に算出できます。
祝日の管理、週末の定義、日付形式の整備など前準備をしっかり行えば、関数を使った日付計算でのミスは格段に減ります。使い分けをマスターして、スケジューリングを効率化してください。
コメント