В этой статье мы создадим определяемую пользователем функцию (UDF), чтобы проверить, является ли это выходным в указанную дату, включая или исключая субботу и воскресенье как выходные.

Необработанные данные для этого образца состоят из дат, расположенных последовательно в столбце A. Мы выясним, является ли данный день выходным, включая или исключая выходные в субботу или воскресенье.

ArrowRawData

Мы указали праздничные даты в графе A на листе «Праздники».

ArrowHolidayList

Мы создали пользовательскую функцию «IsHoliday», чтобы узнать статус праздника на заданную дату.

Синтаксис функции

IsHoliday (Дата, в субботу, в воскресенье)

InclSaturdays и InclSundays — необязательные параметры. По умолчанию оба имеют значение ИСТИНА. Чтобы превратить субботу и воскресенье в рабочие дни, измените значение соответствующего параметра на FALSE.

ArrowOutput

Мы использовали приведенную ниже формулу в ячейке C9, чтобы найти статус праздника для даты в ячейке A9, считая субботу рабочим днем.

IsHoliday (A9, ЛОЖЬ)

Мы использовали приведенную ниже формулу в ячейке D9, чтобы найти статус праздника для даты в ячейке A9, учитывая субботу и воскресенье как рабочие дни.

IsHoliday (A9; ЛОЖЬ; ЛОЖЬ)

Мы использовали приведенную ниже формулу в ячейке E9, чтобы найти статус праздника для даты в ячейке A9 с учетом субботы и воскресенья как выходных.

IsHoliday (A9)

Логическое объяснение

В функции «IsHoliday» сначала мы проверяем, существует ли указанная в параметре дата в указанном списке выходных. Если дата существует в списке выходных, верните «Holiday» в качестве вывода. Если дата не указана в списке праздников, проверьте, является ли данная дата субботой или воскресеньем. В зависимости от предоставленного входного параметра проверьте, следует ли включать или исключать субботу или воскресенье как праздничные дни.

Объяснение кода

Установите RngFind = Worksheets («Holidays»). Columns (1) .Find (LngDate)

Приведенный выше код используется для поиска места, где указанная дата существует в списке праздников.

Если не RngFind — это ничего, тогда OK = «Праздник»

GoTo Last End If Above code используется для проверки наличия указанной даты в списке праздников. Если условие возвращает 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]