【VBA入門】稼働日数を取得する方法|NETWORKDAYS.INTL関数で休日・土日を除外する

業務において、「○日後」ではなく「営業日で何日後か」を知りたい場面は多くあります。
たとえば、プロジェクトの所要日数を土日祝を除いてカウントしたい場合など、Excel VBA では WorksheetFunction.NetworkDays_Intl 関数を使えば柔軟に対応可能です。

この記事では、土日以外の曜日や祝日を除いた稼働日数の取得方法を丁寧に解説いたします。


目次

使用コード:稼働日数のカウント

Sub GetWorkingDays()
    Dim startDate As Date, endDate As Date
    Dim customWeekend As String
    Dim holidayList As Variant

    startDate = Range("C3").Value
    endDate = Range("C4").Value

    customWeekend = "0010010"  ' 土曜と火曜を休日扱い(1=休、0=稼働)
    holidayList = Array(#2025/8/15#, #2025/9/23#)  ' 任意の祝日を指定

    MsgBox "全体の日数:" & endDate - startDate & vbCrLf & _
           "稼働日数 :" & WorksheetFunction.NetworkDays_Intl(startDate, endDate, customWeekend, holidayList)
End Sub

引数の意味と指定方法

引数内容
startDate, endDateカウント対象の開始日・終了日
customWeekend休日とみなす曜日(7桁の文字列で、月〜日)
holidayList祝日など個別に除外する日付(配列で指定)

休日の指定フォーマット(customWeekend)

  • "0000011"土日休み(既定値)
  • "0000001"日曜のみ休み
  • "1111111"毎日休み
  • "0010010"火曜・土曜を休日扱い

各桁の順番は「月・火・水・木・金・土・日」です。“1”が休日、”0″が稼働日になります。


使用例:休日を除く日数計算

前提:

  • C3セルに開始日(例:2025/8/1)
  • C4セルに終了日(例:2025/8/31)
  • 土曜と火曜を休業日とし、8/15 と 9/23 を祝日として除外

→ このようなケースで稼働日数を求めたいとき、NetworkDays_Intl を使えば正確に処理可能です。


まとめ|柔軟な休日設定で正確な稼働日数を算出

VBAで稼働日数をカウントするには、WorksheetFunction.NetworkDays_Intl を用いるのが非常に便利です。

  • 土日以外の任意の休日パターンも柔軟に指定可能
  • 国民の祝日や会社独自の休業日も配列で追加できる
  • 日付の差だけではなく、実働ベースの正確な日数が取得できる

納期管理や稼働スケジュール作成など、業務での実用性が高いテクニックですので、ぜひ使いこなしていただければ幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次