Preverjanje, ali je praznik na določen datum z uporabo VBA v Microsoft Excelu

Anonim

V tem članku bomo ustvarili funkcijo, ki jo določi uporabnik (UDF), da preverimo, ali je na določen datum praznik, vključno z ali izključitvijo sobote in nedelje kot prostega tedna.

Neobdelani podatki za ta vzorec so sestavljeni iz zaporednih datumov v stolpcu A. Ugotovili bomo, ali je na določen datum praznični dan, vključno z ali brez tedna v soboto ali nedeljo.

Datume počitnic smo določili v stolpcu A na listu »Prazniki«.

Ustvarili smo funkcijo po meri "IsHoliday" za iskanje statusa počitnic na določeni datum.

Sintaksa funkcije

IsHoliday (datum, vključno s soboto, vključno z nedeljo)

InclSaturdays in InclSundays sta izbirna parametra. Privzeto imata oba vrednost TRUE. Če želite soboto in nedeljo spremeniti v delovne dni, vrednost ustreznega parametra spremenite v FALSE.

Spodnjo formulo smo v celici C9 uporabili za iskanje prazničnega stanja za datum v celici A9, pri čemer je sobota delovni dan.

= IsHoliday (A9, FALSE)

Spodnjo formulo smo v celici D9 uporabili za iskanje počitniškega statusa za datum v celici A9, pri čemer smo sobote in nedelje obravnavali kot delovne dni.

= IsHoliday (A9, FALSE, FALSE)

Spodnjo formulo smo v celici E9 uporabili za iskanje počitniškega statusa za datum v celici A9, pri čemer smo sobote in nedelje obravnavali kot proste tedne.

= IsHoliday (A9)

Logična razlaga

V funkciji »IsHoliday« najprej preverimo, ali navedeni datum v parametru obstaja na podanem seznamu počitnic. Če na seznamu počitnic obstaja datum, kot izhod vrnite “Holiday”. Če na seznamu počitnic ni datuma, preverite, ali je dan sobota ali nedelja. Na podlagi vnesenega vhodnega parametra preverite, ali soboto ali nedeljo vključiti ali izključiti kot praznike.

Razlaga kode

Nastavi RngFind = delovne liste ("Prazniki"). Stolpci (1). Najdi (LngDate)

Zgornja koda se uporablja za iskanje lokacije, kjer je na seznamu počitnic določen datum.

Če ni, potem RngFind ni nič

OK = "Počitnice"

Pojdi nazadnje

Konec Če

Zgornja koda se uporablja za preverjanje, ali je na prazničnem seznamu določen datum. Če stanje vrne TRUE, potem funkcija po meri vrne “Holiday” kot izhod in krmiljenje se premakne v zadnjo vrstico UDF.

Za kodo sledite spodaj

 Možnost Eksplicitna funkcija IsHoliday (LngDate As Date, Optional InclSaturdays As Boolean = True, _ Optional InclSundays As Boolean = True) 'Razglasitev spremenljivk Dim RngFind As Range Dim OK As String' Inicializiranje spremenljivke OK = "Delovni dan" Napaka Nadaljuj Naprej ' Iskanje lokacije, kjer določen datum obstaja na listu Prazniki Nastavite RngFind = delovne liste ("Prazniki"). Stolpci (1). Najdi (LngDate) Napaka GoTo 0 'Preverjanje, ali je na določen datum praznični dan, če ni RngFind ni nič Potem OK = "Počitnice" Pojdi na zadnji konec Če "Preverim, ali je na določen datum sobota Če je vklj. Sobota, potem če je dan v tednu (LngDate, 2) = 6 Potem je OK =" Počitnice "Pojdi na zadnji konec, če se konča, če" Preverjam, ali je nedelja v dani datum If InclSundays Then If Weekday (LngDate, 2) = 7 Potem OK = "Praznik" Konec Če je konec Če Zadnji: IsHoliday = OK Konec funkcije 

Če vam je bil ta blog všeč, ga delite s prijatelji na Facebooku. Prav tako nam lahko sledite na Twitterju in Facebooku.

Radi bi slišali od vas, nam sporočite, kako lahko izboljšamo svoje delo in ga izboljšamo za vas. Pišite nam na spletnem mestu e -pošte