(Excel_VBA)X営業日後を計算する

定例会議資料の提出など、定期的に他者に依頼する場合が多いと定型文メールを作成して自動化したくなりますが、依頼日から5営業日後とか、会議本番日の2営業日前など営業日基準で締切日を設定して依頼しようとすると、土日や祝日を含まないよう日付設定する必要があります。

日付だけは手打ち、土日を挟む前提で計算、などで簡易的に自動化していましたが、簡単に自動化する方法を知ったので記事化します。

コードの記述(祝日未考慮)

X営業日後の日付計算(祝日未考慮)

Sub X営業日後()
dim deadline as string
deadline = CDate(WorksheetFunction.WorkDay(date, 5))
End Sub

例えば、11/14(月)の5営業日後は11/21(月)なので、
deadlineには11/21(月)が代入されます。
※ CDateが無いと、シリアル値(数値5桁)が代入されます。

コードの記述(祝日考慮)

準備として、祝日のデータは自分で作成するしか方法が無いので、
ExcelファイルのA列に祝日を入力しておきます。

X営業日後の日付計算(祝日考慮)

Sub X営業日後()
dim deadline as string
deadline = CDate(WorksheetFunction.WorkDay(date, 5, Range(“a:a”)))
End Sub

Range(“a:a”)が追記となってます。
A列に記載された日付は祝日としてカウントする意味になります。

ExcelファイルのA1セルに11/23(水)を入力しておき、
11/14(月)の10営業日後を計算すると、11/23(水)の祝日を挟んでいるので、
11/29(火)がdeadlineに代入されます。

X営業日前について

Workday関数の第二引数に記載した数字が、X営業日後のXにあたる部分です。
X営業日にする場合は、マイナスで記載すれば計算できます。

X営業日前の日付計算(祝日未考慮)

Sub X営業日前()
dim deadline as string
deadline = CDate(WorksheetFunction.WorkDay(date, -5))
End Sub

コメント

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