В тази статия ще създадем функция, дефинирана от потребителя (UDF), за да проверим дали е празник на определената дата, включително или изключване на събота и неделя като почивни дни.
Суровите данни за тази извадка се състоят от последователни дати в колона А. Ще открием дали това е празник на дадената дата, включително или без почивна седмица в събота или неделя.
Посочихме датите за почивка в колона А на лист „Празници“.
Създадохме персонализирана функция „IsHoliday“, за да намерим състоянието на празника на дадената дата.
Синтаксис на функцията
IsHoliday (Дата, вкл. Събота, вкл. Неделя)
InclSaturdays и InclSundays са незадължителни параметри. По подразбиране и двете имат TRUE стойност. За да промените събота и неделя в работни дни, променете стойността на съответния параметър на FALSE.
Използвахме формулата по -долу в клетка C9, за да намерим състоянието на празника за дата в клетка A9, считайки събота за работен ден.
= IsHoliday (A9, FALSE)
Използвахме формулата по -долу в клетка D9, за да намерим състоянието на празника за дата в клетка A9, като считаме съботите и неделите за работни дни.
= IsHoliday (A9, FALSE, FALSE)
Използвахме формулата по -долу в клетка E9, за да намерим състоянието на ваканцията за дата в клетка A9, като считаме съботите и неделите за почивни дни.
= IsHoliday (A9)
Логично обяснение
Във функцията “IsHoliday” първо проверяваме дали дадена дата в параметъра съществува в посочения списък с ваканции. Ако в списъка с ваканции има дата, върнете „Holiday“ като изход. Ако датата не съществува в списъка с ваканции, проверете дали дадената дата е събота или неделя. Въз основа на предоставения входен параметър проверете дали да включите или изключите събота или неделя като празници.
Обяснение на кода
Задайте RngFind = Работни листове ("Празници"). Колони (1). Find (LngDate)
Горният код се използва за намиране на мястото, където посочената дата съществува в списъка с ваканции.
Ако не, тогава RngFind не е нищо
OK = "Празник"
Отиди на последно
Край Ако
Горният код се използва за проверка дали посочената дата съществува в списъка с ваканции. Ако условието връща TRUE, тогава персонализираната функция връща “Holiday” като изход и контролата се измества към последния ред на UDF.
Моля, следвайте кода по -долу
Опция Изрична функция IsHoliday (LngDate As Date, Optional InclSaturdays As Boolean = True, _ Optional InclSundays As Boolean = True) 'Деклариране на променливи Dim RngFind As Range Dim OK As String' Инициализиране на променливата OK = "Работен ден" При грешка Възобновяване на следващата ' Намиране на местоположението, където съществува посочената дата в листа за празници Задайте RngFind = Работни листове ("Holidays"). Колони (1). Find (LngDate) On Error GoTo 0 'Проверява дали е датата на дадената дата, ако не RngFind Is Nothing След това OK = "Holiday" GoTo Last End If 'Проверява дали е събота на дадената дата If InclSaturdays then If Weekday (LngDate, 2) = 6 then OK = "Holiday" GoTo Last End If End If' Проверява дали е неделя на дадена дата If InclSundays Then If Weekday (LngDate, 2) = 7 then OK = "Holiday" End If End If Last: IsHoliday = OK End Функция
Ако този блог ви е харесал, споделете го с приятелите си във Facebook. Също така можете да ни следвате в Twitter и Facebook.
Ще се радваме да чуем от вас, уведомете ни как можем да подобрим работата си и да я направим по -добра за вас. Пишете ни на имейл сайта