【VBAリファレンス|実務向け】実務で差がつく!NETWORKDAYS関数とWORKDAY関数の「土日以外」対応術

スポンサーリンク

皆さん、こんにちは。VBA講師の私が、あえて今回は「関数」の深掘りをお届けします。なぜなら、VBAで複雑なロジックを組む前に、Excel標準関数でスマートに解決できることは、メンテナンス性を考慮して関数に任せるべきだからです。今回は業務効率化の要となる「稼働日計算」について解説します。

なぜNETWORKDAYS関数を使うのか

多くの現場で、納期計算や工数計算に引き算(終了日 – 開始日)を使っているのを見かけます。しかし、これでは土日が無視されてしまい、週明けの納期が狂う原因になります。NETWORKDAYS関数は、指定した期間内の「稼働日(土日を除く日数)」を自動算出する、実務の必須ツールです。

例えば、プロジェクトの進捗管理表で「着手日から完了日まで何営業日かかったか」を算出する場合、単純な差分ではなく、この関数を使うことで「土日を挟んでも正確な実働日数」が弾き出せます。

WORKDAY関数の「先読み」力

一方で、WORKDAY関数は「未来の特定」に真価を発揮します。「着手日から5営業日後の日付はいつか?」といった、納期回答や納品予定日の算出に最適です。

実務で私がよく推奨するのは、これに「祝日リスト」を組み合わせることです。関数の引数に祝日テーブルを指定するだけで、日本の複雑なカレンダーにも完璧に対応できます。

VBAエンジニアが知っておくべき「落とし穴」

VBAで日付処理を組む際、Forループで一日ずつ判定するコードを書く方がいますが、それは避けるべきです。コードが長くなるだけでなく、処理速度も低下します。VBAで記述する場合でも、以下のようにワークシート関数を呼び出すのが最も堅牢です。

Application.WorksheetFunction.NetworkDays(開始日, 終了日, 祝日範囲)

このように、VBAと関数を適材適所で使い分けることこそが、中級者から上級者へのステップアップです。次回は、土日以外に「水曜定休」などの独自ルールがある場合の実践的なテクニックをお伝えします。まずは今の業務で、単純な日付の引き算をNETWORKDAYS関数に置き換えるところから始めてみてください。

タイトルとURLをコピーしました