Kontrollerer, om det er ferie på den angivne dato ved hjælp af VBA i Microsoft Excel

Anonim

I denne artikel opretter vi en brugerdefineret funktion (UDF) for at kontrollere, om det er ferie på den angivne dato, inklusive eller eksklusive lørdage og søndage som fridage.

Rådata for denne prøve består af datoer i rækkefølge i kolonne A. Vi finder, om det er ferie på den givne dato, inklusive eller eksklusive fri uge lørdag eller søndag.

Vi har angivet feriedatoer i kolonnen A på bladet "Ferie".

Vi har oprettet "IsHoliday" brugerdefineret funktion for at finde feriestatus på den givne dato.

Syntaks for funktion

IsHoliday (Dato, InclSaturdays, InclSundays)

InclSaturdays og InclSundays er valgfrie parametre. Som standard har begge SAND værdi. Hvis du vil ændre lørdag og søndag til arbejdsdage, skal du ændre værdien af ​​den respektive parameter til FALSK.

Vi har brugt nedenstående formel i celle C9 til at finde feriestatus for dato i celle A9 i betragtning af lørdag som en arbejdsdag.

= IsHoliday (A9, FALSK)

Vi har brugt nedenstående formel i celle D9 til at finde feriestatus for dato i celle A9 i betragtning af lørdage og søndage som arbejdsdage.

= IsHoliday (A9, FALSE, FALSE)

Vi har brugt nedenstående formel i celle E9 til at finde feriestatus for dato i celle A9 i betragtning af lørdage og søndage som fridage.

= IsHoliday (A9)

Logisk forklaring

I funktionen “IsHoliday” kontrollerer vi først, om en given dato i parameteren findes i den angivne ferieliste. Hvis der findes dato på ferielisten, skal du returnere "Ferie" som output. Hvis datoen ikke findes på ferielisten, skal du kontrollere, om den angivne dato er en lørdag eller en søndag. Baseret på den angivne inputparameter, skal du kontrollere, om du skal inkludere eller ekskludere en lørdag eller en søndag som helligdage.

Kode forklaring

Indstil RngFind = regneark ("helligdage"). Kolonner (1) .Find (LngDate)

Ovenstående kode bruges til at finde det sted, hvor den angivne dato findes i ferielisten.

Hvis ikke RngFind er ingenting

OK = "ferie"

GoTo Last

Afslut Hvis

Ovenstående kode bruges til at kontrollere, om den angivne dato findes på ferielisten. Hvis betingelsen returnerer SAND, returnerer brugerdefineret funktion "Ferie" som output, og kontrollen skifter til den sidste linje i UDF.

Følg venligst nedenstående for koden

 Option Eksplicit funktion IsHoliday (LngDate As Date, Valgfri InclSaturdays As Boolean = True, _ Valgfri InclSundays As Boolean = True) 'Deklarerende variabler Dim RngFind som Range Dim OK som String' Initialiserer variablen OK = "Arbejdsdag" Ved fejl Genoptag næste ' Find den placering, hvor den angivne dato findes i helligdagsarket Indstil RngFind = Worksheets ("helligdage"). Kolonner (1) .Find (LngDate) Ved fejl Gå til 0 'Kontrollerer, om det er ferie på den givne dato Hvis ikke RngFind er ingenting Så OK = "Holiday" GoTo Last End If 'Kontrol af om det er lørdag på den givne dato If InclSaturdays Then If Weekday (LngDate, 2) = 6 Herefter OK = "Holiday" GoTo Last End If End If' Kontrol af om det er søndag den given date If InclSundays Then If Weekday (LngDate, 2) = 7 Then OK = "Holiday" End If End If Last: IsHoliday = OK Slutfunktion 

Hvis du kunne lide denne blog, kan du dele den med dine venner på Facebook. Du kan også følge os på Twitter og Facebook.

Vi vil meget gerne høre fra dig, lad os vide, hvordan vi kan forbedre vores arbejde og gøre det bedre for dig. Skriv til os på e -mail -stedet