Проверка, является ли это праздник на указанную дату с помощью VBA в Microsoft Excel
В этой статье мы создадим определяемую пользователем функцию (UDF), чтобы проверить, является ли это выходным в указанную дату, включая или исключая субботу и воскресенье как выходные.
Необработанные данные для этого образца состоят из дат, расположенных последовательно в столбце A. Мы выясним, является ли данный день выходным, включая или исключая выходные в субботу или воскресенье.
Мы указали праздничные даты в графе A на листе «Праздники».
Мы создали пользовательскую функцию «IsHoliday», чтобы узнать статус праздника на заданную дату.
Синтаксис функции
IsHoliday (Дата, в субботу, в воскресенье)
InclSaturdays и InclSundays — необязательные параметры. По умолчанию оба имеют значение ИСТИНА. Чтобы превратить субботу и воскресенье в рабочие дни, измените значение соответствующего параметра на FALSE.
Мы использовали приведенную ниже формулу в ячейке 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]