この記事では、ユーザー定義関数(UDF)を作成して、土曜日と日曜日を休日として含めるか除外するかを含め、指定した日付の休日かどうかを確認します。

このサンプルの生データは、列Aの日付の順序で構成されています。土曜日または日曜日の休日を含む、または含まない、指定された日付の休日であるかどうかがわかります。

ArrowRawData

「休日」シートのA列に休日の日付を指定しました。

ArrowHolidayList

指定された日付の休日のステータスを検索する「IsHoliday」カスタム関数を作成しました。

関数の構文

IsHoliday(Date、InclSaturdays、InclSundays)

InclSaturdaysおよびInclSundaysはオプションのパラメーターです。デフォルトでは、両方ともTRUE値を持っています。土曜日と日曜日を営業日に変更するには、それぞれのパラメーターの値をFALSEに変更します。

ArrowOutput

セルC9で以下の数式を使用して、土曜日を営業日と見なしたセルA9の日付の休日ステータスを検索しました。

IsHoliday(A9、FALSE)

セルD9で以下の数式を使用して、土曜日と日曜日を稼働日としてセルA9の日付の休日ステータスを検索しました。

IsHoliday(A9、FALSE、FALSE)

セルE9で以下の数式を使用して、土曜日と日曜日を週休みとしてセルA9の日付の休日ステータスを検索しました。

IsHoliday(A9)

ロジックの説明

「IsHoliday」関数では、最初に、パラメーターで指定された日付が指定された休日リストに存在するかどうかを確認します。休日リストに日付が存在する場合は、出力として「Holiday」を返します。休日リストに日付が存在しない場合は、指定された日付が土曜日か日曜日かを確認してください。提供された入力パラメーターに基づいて、土曜日または日曜日を休日として含めるか除外するかを確認します。

コードの説明

RngFind = Worksheets( “Holidays”)。Columns(1).Find(LngDate)を設定します

上記のコードは、指定された日付が休日リストに存在する場所を見つけるために使用されます。

RngFindがない場合は、OK = “Holiday”

GoTo Last End If上記のコードを使用して、指定した日付が休日リストに存在するかどうかを確認します。条件がTRUEを返す場合、カスタム関数は出力として「Holiday」を返し、制御はUDFの最後の行にシフトします。

コードについては以下に従ってください

Option Explicit

Function IsHoliday(LngDate As Date, Optional InclSaturdays As Boolean = True, _

Optional InclSundays As Boolean = True)

'Declaring variables

Dim RngFind As Range

Dim OK As String

'Initializing the variable

OK = "Working day"

On Error Resume Next

'Finding the location where the specified date exist in the Holidays sheet

Set RngFind = Worksheets("Holidays").Columns(1).Find(LngDate)

On Error GoTo 0

'Checking whether it is holiday on the given date

If Not RngFind Is Nothing Then

OK = "Holiday"

GoTo Last

End If

'Checking whether it is Saturday on given date

If InclSaturdays Then

If Weekday(LngDate, 2) = 6 Then

OK = "Holiday"

GoTo Last

End If

End If

'Checking whether it is Sunday on given date

If InclSundays Then

If Weekday(LngDate, 2) = 7 Then

OK = "Holiday"

End If

End If

Last:

IsHoliday = OK

End Function

このブログが気に入ったら、FacebookやFacebookで友達と共有してください。

皆様からのご意見をお待ちしております。私たちの仕事を改善し、あなたのために改善する方法をお知らせください。 [email protected]までご連絡ください