ADVERTISEMENT

【Googleスプレッドシート】NETWORKDAYS関数で営業日数を算出!休日リストの指定方法

【Googleスプレッドシート】NETWORKDAYS関数で営業日数を算出!休日リストの指定方法
🛡️ 超解決

プロジェクトの進捗管理や勤怠計算で、営業日だけを数えたい場面はよくあります。土日を自動で除外してくれるNETWORKDAYS関数を使えば、手動でカレンダーを確認する手間が省けます。さらに、会社の休日や祝日を独自に指定する方法も知っておくと、より実務に即した計算が可能です。この記事では、NETWORKDAYS関数の基本的な使い方から、休日リストを柔軟に指定するテクニックまでを解説します。

【要点】NETWORKDAYS関数で営業日数を正確に計算する方法

  • NETWORKDAYS関数の基本構文: =NETWORKDAYS(開始日, 終了日, [休日リスト]) で土日を自動除外し、任意の休日も加味します。
  • 休日リストを範囲参照で指定: シート上に休日一覧を作成し、第3引数にその範囲を指定することで、簡単に反映できます。
  • 配列定数で直接指定: 小さな休日セットなら、{DATE(2024,1,1),DATE(2024,5,1)} のように数式内に直接書き込めます。

ADVERTISEMENT

NETWORKDAYS関数の概要と仕組み

NETWORKDAYS関数は、指定した開始日から終了日までの間にある営業日(平日)の日数を返す関数です。この関数は自動的に土曜日と日曜日を休日とみなして除外します。ただし、会社独自の休日や国民の祝日など、土日以外の休日を追加で除外したい場合には、第3引数に休日リストを指定します。休日リストは日付のシリアル値(数値)または日付文字列の一覧で、効率よく計算するためには事前にリストを整備しておくことがポイントです。

NETWORKDAYS関数の基本的な使い方

まずは、休日リストを指定しないシンプルな例で、関数の動作を確認しましょう。例えば、A1セルに開始日「2024/1/1」、B1セルに終了日「2024/1/10」が入力されている場合、以下の数式で平日の日数が計算されます。

=NETWORKDAYS(A1, B1)

この数式は、2024年1月1日から1月10日までのうち、土日を除いた平日の日数を返します。2024年1月1日は月曜日、1月10日は水曜日ですので、週末の1月6日(土)と1月7日(日)が除外され、結果は8日間となります。このように、第3引数を省略すると、土日のみが休日として扱われます。

休日リストを指定する2つの方法

ここからが本題です。会社の創立記念日や振替休日など、土日以外に休みがある場合、それらを計算に反映するには休日リストを関数に渡します。方法は大きく2つあります。

1. セル範囲を参照する方法

最も実用的な方法で、シートのどこかに休日を日付で入力した範囲を用意し、その範囲を第3引数に指定します。例えば、D2:D10に休日一覧がある場合、以下の数式で計算します。

=NETWORKDAYS(A1, B1, D2:D10)

休日リストの範囲には、空白セルがあっても構いません。ただし、範囲内に日付以外の値(文字列など)が含まれているとエラーになります。また、休日リストは昇順で並べる必要はありませんが、重複しているとその日が複数回分除外されるわけではないので、重複は無視されます。運用としては、別シートに休日マスターを作成し、そのシートの範囲を指定するのも良い方法です。

2. 配列定数で直接指定する方法

休日の数が少ない場合や、数式内で完結させたい場合は、配列定数を使います。例えば、2024年の元日と憲法記念日だけを除外したい場合、以下のように書きます。

=NETWORKDAYS(A1, B1, {DATE(2024,1,1), DATE(2024,5,3)})

配列定数は波括弧 {} で囲み、カンマで区切ります。日付はDATE関数でシリアル値に変換するか、日付を直接文字列で書くことも可能ですが、DATE関数を使う方が誤変換のリスクが低いです。この方法は、数式をコピーして使う場合など、休日リストを固定したいときに便利です。

ADVERTISEMENT

NETWORKDAYS.INTL関数を使った柔軟な曜日指定

NETWORKDAYS関数の拡張版にNETWORKDAYS.INTL関数があります。この関数を使うと、土日以外の曜日を週末として設定したり、週末の定義を変更したりできます。第3引数に週末のパターン番号を指定することで、例えば「日曜日のみを週末」とすることも可能です。また、第4引数に休日リストを指定する点はNETWORKDAYSと同じです。

構文は =NETWORKDAYS.INTL(開始日, 終了日, [週末], [休日]) です。週末のパラメータは1〜17の数値、または7桁の0と1の文字列で指定します。例えば、週末を日曜日のみにするには「11」を指定します(詳細はGoogleのヘルプをご参照ください)。

注意点とよくある失敗

休日リストに空白がある場合の対処

休日リストの範囲に空白セルが含まれている場合、NETWORKDAYS関数は空白を無視して計算します。ただし、範囲に文字列やエラー値が含まれていると、それらが日付として解釈できずに#VALUE!エラーが発生します。事前にデータのクレンジングを行い、休日リストは日付のみにしておきましょう。

日付がシリアル値として認識されないケース

日付を文字列で入力した場合、NETWORKDAYS関数が正しく認識できないことがあります。例えば、「2024/1/1」と入力すると、Googleスプレッドシートは自動的に日付と認識しますが、テキストとして保存されている場合はエラーになります。日付は必ずスプレッドシートの日付形式(シリアル値)で入力するか、DATE関数を使ってください。

過去や未来の日付を指定する場合の注意

開始日が終了日より後の場合、NETWORKDAYS関数は負の値を返します。意図しない結果を防ぐため、開始日と終了日の大小関係を確認してください。また、日付が1900年より前や、9999年より後などの範囲外の日付はエラーになります。

NETWORKDAYS関数とNETWORKDAYS.INTL関数の比較

項目 NETWORKDAYS NETWORKDAYS.INTL
週末の定義 土曜日と日曜日(固定) 任意の曜日を週末に設定可能
引数の数 2〜3個 2〜4個
休日リストの扱い 第3引数(省略可) 第4引数(省略可)
互換性 Excelとの互換性が高い Excel 2010以降で使用可能

まとめ

NETWORKDAYS関数を使えば、土日を除外した営業日数を簡単に計算できます。休日リストを指定することで、会社独自の休日も正確に反映できます。リストをシートに用意するか、配列定数で直接指定するかは、ケースに応じて使い分けてください。さらに、曜日のパターンが特殊な場合はNETWORKDAYS.INTL関数も検討しましょう。これらの関数を活用して、プロジェクト計画や勤怠管理を効率化してください。例えば、年間の営業日数を集計する際に、事前に休日リストを整備しておくと、何度も同じ計算を繰り返す手間が省けます。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。