Kontrollerer om det er ferie på den angitte datoen ved hjelp av VBA i Microsoft Excel

Anonim

I denne artikkelen vil vi opprette en brukerdefinert funksjon (UDF) for å kontrollere om det er ferie på den angitte datoen, inkludert eller unntatt lørdager og søndager som fridager.

Rådata for denne prøven består av datoer i rekkefølge i kolonne A. Vi finner om det er ferie på den gitte datoen, inkludert eller ekskludert fri uke på lørdag eller søndag.

Vi har spesifisert feriedatoene i kolonnen A på arket "Ferier".

Vi har opprettet “IsHoliday” tilpasset funksjon for å finne feriestatus på den oppgitte datoen.

Syntaks for funksjon

IsHoliday (Date, InclSaturdays, InclSundays)

InclSaturdays og InclSundays er valgfrie parametere. Som standard har begge SANN verdi. Hvis du vil endre lørdag og søndag til virkedager, endrer du verdien til den respektive parameteren til FALSK.

Vi har brukt formelen nedenfor i celle C9 for å finne feriestatus for dato i celle A9 med tanke på lørdag som en arbeidsdag.

= IsHoliday (A9, FALSE)

Vi har brukt formelen nedenfor i celle D9 for å finne feriestatus for dato i celle A9 med tanke på lørdager og søndager som arbeidsdager.

= IsHoliday (A9, FALSE, FALSE)

Vi har brukt formelen nedenfor i celle E9 for å finne feriestatus for dato i celle A9 med tanke på lørdager og søndager som fridager.

= IsHoliday (A9)

Logisk forklaring

I funksjonen “IsHoliday” sjekker vi først om en gitt dato i parameteren finnes i den angitte ferielisten. Hvis datoen finnes i ferielisten, returnerer du "Ferie" som utgang. Hvis datoen ikke finnes i ferielisten, må du sjekke om den oppgitte datoen er en lørdag eller en søndag. Basert på inngangsparameteren, sjekk om du vil inkludere eller ekskludere en lørdag eller en søndag som høytider.

Kode forklaring

Angi RngFind = Regneark ("Helligdager"). Kolonner (1) .Finn (LngDate)

Koden ovenfor brukes til å finne stedet der den angitte datoen finnes i ferielisten.

Hvis ikke RngFind er ingenting da

OK = "ferie"

GoTo Last

Slutt om

Koden ovenfor brukes til å kontrollere om angitt dato finnes i ferielisten. Hvis betingelsen returnerer SANN, returnerer den egendefinerte funksjonen "Ferie" som utgang, og kontrollen skifter til den siste linjen i UDF.

Følg koden nedenfor

 Alternativ Eksplisitt funksjon IsHoliday (LngDate As Date, Valgfritt InclSaturdays As Boolean = True, _ Valgfritt InclSundays As Boolean = True) 'Deklarerende variabler Dim RngFind As Range Dim OK As String' Initialiserer variabelen OK = "Working day" On Error Resume Next ' Finne stedet der den angitte datoen eksisterer i helligdagsarket Sett RngFind = Worksheets ("Holidays"). Kolonner (1) .Find (LngDate) On Error GoTo 0 'Kontrollerer om det er ferie på den gitte datoen Hvis ikke RngFind er ingenting Deretter OK = "Holiday" GoTo Last End If 'Sjekker om det er lørdag på gitt dato Hvis InclSaturdays Then If Weekday (LngDate, 2) = 6 Da OK = "Holiday" GoTo Last End If End If' Kontrollerer om det er søndag den gitt dato Hvis InclSundays Then If Weekday (LngDate, 2) = 7 Så OK = "Holiday" End If End If Last: IsHoliday = OK Sluttfunksjon 

Hvis du likte denne bloggen, del den med vennene dine på Facebook. Du kan også følge oss på Twitter og Facebook.

Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre arbeidet vårt og gjøre det bedre for deg. Skriv til oss på e -post