【VBAリファレンス】Excel実務の必須テクニック 土日祝日を自動回避するWORKDAY関数とWORKDAY.INTL関数の完全攻略ガイド

スポンサーリンク

概要:ビジネスの日付計算における「稼働日」の重要性

Excelを使用して業務管理を行う際、最も頻繁に発生する悩みの一つが「日付の計算」です。例えば、「プロジェクトの開始日から20営業日後の日付を算出したい」「納品まで土日を除いて5日かかるスケジュールを組みたい」といった場面です。単純に「開始日 + 日数」という計算式を使ってしまうと、土曜日や日曜日、さらには日本の祝日まで計算に含まれてしまい、実務とは乖離した日付が算出されてしまいます。

こうした問題を一撃で解決するのが、Excelに標準搭載されている「WORKDAY関数」および「WORKDAY.INTL関数」です。これらは、指定した日数分だけ「稼働日」を進めた(または戻した)日付を返すための関数です。本記事では、これら二つの関数の基本から、実務で絶対に知っておくべき応用テクニックまでを、ベテラン講師の視点で徹底的に解説します。

詳細解説:WORKDAY関数とWORKDAY.INTL関数の違い

まず、基本的な「WORKDAY関数」から見ていきましょう。この関数は、土曜日と日曜日を「非稼働日」として自動的に除外し、指定した日数だけ経過した日付を算出します。

書式:=WORKDAY(開始日, 日数, [祝日])

引数の構成は非常にシンプルです。「開始日」は起算日、「日数」は進めたい稼働日数を指定します。最後の「祝日」は省略可能ですが、実務では必須です。ここには、会社独自の休日や祝日リスト(日付の範囲)を指定します。

一方で、「WORKDAY.INTL関数」は、WORKDAY関数の上位互換です。現代のビジネス環境では、「完全週休二日制」だけではなく、「水日休み」「土曜出勤あり」など、多様な勤務体系が存在します。WORKDAY.INTL関数は、どの曜日を休日にするかをユーザーが柔軟に定義できるのが最大の特徴です。

書式:=WORKDAY.INTL(開始日, 日数, [週末], [祝日])

「週末」引数には、どの曜日を休日にするかを示すコード番号(1〜17、または11〜17など)を指定します。例えば、「1」を指定すれば土日休み、「11」を指定すれば日曜日のみ休みといった制御が可能です。

サンプルコード:実務で使える具体的実装例

それでは、実際のシートでどのように設定するか、サンプルを見てみましょう。ここでは、セルA2に「開始日」、B2に「日数(例:10営業日)」が入力されていると仮定し、D列に「祝日リスト」が定義されているものとします。


' WORKDAY関数:土日+祝日を除外して10営業日後の日付を求める
=WORKDAY(A2, B2, D2:D20)

' WORKDAY.INTL関数:祝日を考慮し、かつ土曜日のみを休日として計算する
' 週末引数に「17」を指定すると「土曜日のみ休み」となります
=WORKDAY.INTL(A2, B2, 17, D2:D20)

' さらに高度な設定:カスタム文字列で休日を指定する
' "0000011" は月火水木金=稼働、土日=休み を意味する
=WORKDAY.INTL(A2, B2, "0000011", D2:D20)

特に「週末」引数に文字列(例:”0000011″)を使用する方法は強力です。0は稼働日、1は休日を表します。この表記法を使えば、隔週休みのシフトや、特殊な勤務体制にも完全に対応できます。

実務アドバイス:エラーを防ぎ、メンテナンス性を高めるポイント

現場のExcelファイルでよくある失敗は、「祝日リスト」の管理不足です。WORKDAY関数を使いこなすためのプロのテクニックを3つ紹介します。

1. 祝日リストは「テーブル」で管理する
祝日リストを単純な範囲で指定すると、新しい祝日が増えた際に範囲を修正する必要があります。リストを「テーブル」に変換し、構造化参照(テーブル名[列名])で指定しておけば、行が追加されても自動的に計算範囲が拡張されます。

2. 「日数」をマイナスにする
意外と知られていないのが、引数「日数」に負の数(-5など)を入力できることです。これにより、「納品日から5営業日前に着手する必要がある」といった、過去に遡る日付計算も簡単に実現できます。

3. WORKDAY.INTLのデフォルト設定を理解する
WORKDAY.INTL関数で「週末」引数を省略すると、自動的に土日休みとして計算されます。つまり、通常の週休二日制であればWORKDAY関数を使ってもWORKDAY.INTL関数を使っても結果は同じです。しかし、将来的な組織変更や、柔軟性を考慮して、実務では最初からWORKDAY.INTL関数に統一しておくことを強く推奨します。

4. 戻り値の書式設定
関数を入力した直後、セルが「45321」のような数値で表示されることがあります。これはExcelが日付をシリアル値で管理しているためです。セルの書式設定を「日付(yyyy/mm/dd)」に変更するのを忘れないようにしてください。

まとめ:ビジネスのスピードを加速させる日付管理

WORKDAY関数とWORKDAY.INTL関数は、単なる日付計算のツールではありません。これらを活用することで、手作業による日付算出ミスをゼロにし、スケジュールの信憑性を劇的に高めることができます。

多くのユーザーがカレンダーを見ながら「土日を数えて…」と指折り数えて日付を入力していますが、これはビジネスにおいて非常に非効率であり、ミスが入り込む余地を生みます。Excelにルールを教え、計算を自動化させることは、業務効率化の第一歩です。

まずは、直近のプロジェクト表や納品管理シートで、これらの関数を一つ試してみてください。一度この自動化の恩恵を受けると、手動で日付を入力することに戻ることは二度とできないはずです。正確で迅速なスケジュール管理を実現し、プロフェッショナルな事務処理環境を構築していきましょう。

今回紹介したWORKDAY.INTL関数の「週末指定コード」の全容や、祝日テーブルの構築法は、一度覚えてしまえば一生使えるスキルです。ぜひ、今日からあなたのExcelワークフローに組み込んでみてください。

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