Provjera je li praznik navedenog datuma pomoću VBA u programu Microsoft Excel

Anonim

U ovom ćemo članku stvoriti Korisnički definiranu funkciju (UDF) kako bismo provjerili je li blagdan navedenog datuma, uključujući ili isključuje subote i nedjelje kao tjedne slobodne dane.

Sirovi podaci za ovaj uzorak sastoje se od datuma u stupcu A. Utvrdit ćemo je li blagdan na navedeni datum, uključujući ili isključujući slobodni tjedan u subotu ili nedjelju.

Datume odmora naveli smo u koloni A na listu „Praznici“.

Stvorili smo prilagođenu funkciju "IsHoliday" za pronalaženje statusa praznika na određeni datum.

Sintaksa funkcije

IsHoliday (datum, uključujući subotu, uključujući nedjelju)

InclSaturdays i InclSundays su izborni parametri. Prema zadanim postavkama, obje imaju TRUE vrijednost. Za promjenu subote i nedjelje u radne dane, promijenite vrijednost odgovarajućeg parametra na FALSE.

Koristili smo donju formulu u ćeliji C9 za pronalaženje statusa praznika za datum u ćeliji A9 uzimajući u obzir subotu kao radni dan.

= IsHoliday (A9, FALSE)

Upotrijebili smo donju formulu u ćeliji D9 za pronalaženje statusa praznika za datum u ćeliji A9 uzimajući u obzir subotu i nedjelju kao radne dane.

= IsHoliday (A9, FALSE, FALSE)

Koristili smo donju formulu u ćeliji E9 za pronalaženje statusa praznika za datum u ćeliji A9 uzimajući u obzir da su subote i nedjelje slobodni tjedni.

= IsHoliday (A9)

Logično objašnjenje

U funkciji “IsHoliday” prvo provjeravamo postoji li navedeni datum u parametru na navedenom popisu praznika. Ako datum postoji na popisu praznika, vratite “Holiday” kao izlaz. Ako datum ne postoji na popisu praznika, provjerite je li navedeni datum subota ili nedjelja. Na temelju navedenog ulaznog parametra provjerite želite li subotu ili nedjelju uključiti ili isključiti kao praznike.

Objašnjenje koda

Postavi RngFind = Radne listove ("Praznici"). Stupci (1). Pronađi (LngDate)

Gornji kôd koristi se za pronalaženje lokacije na kojoj navedeni datum postoji na popisu praznika.

Ako nije, tada RngFind nije ništa

OK = "Odmor"

Idi na posljednje

Završi ako

Gornji kôd koristi se za provjeru postoji li navedeni datum na popisu praznika. Ako uvjet vrati TRUE, tada prilagođena funkcija vraća “Holiday” kao izlaz, a kontrola se prebacuje na zadnji redak UDF -a.

Molimo slijedite dolje za kôd

 Opcija Eksplicitna funkcija IsHoliday (LngDate As Date, Optional InclSaturdays As Boolean = True, _ Optional InclSundays As Boolean = True) 'Deklariranje varijabli Dim RngFind As Range Dim OK As String' Pokretanje varijable OK = "Radni dan" Pogreška Nastavi dalje ' Pronalaženje lokacije na kojoj navedeni datum postoji na listu Praznici Postavite RngFind = Radne listove ("Praznici"). Stupci (1). Pronađite (LngDate) On Error GoTo 0 'Provjeravamo je li na taj dan praznik Ako nije RngFind nije ništa Zatim OK = "Blagdan" Idi na posljednji kraj Ako "Provjeravam je li subota na zadani datum Ako je uključenoSaturdays then If Weekday (LngDate, 2) = 6 then OK =" Holiday "GoTo Last End If End If 'Provjeravam je li nedjelja u dati datum If InclSundays Then If Weekday (LngDate, 2) = 7 Then OK = "Holiday" End If End If Last: IsHoliday = OK End Funkcija 

Ako vam se dopao ovaj blog, podijelite ga sa svojim prijateljima na Facebooku. Također, možete nas pratiti na Twitteru i Facebooku.

Voljeli bismo vas čuti, javite nam kako možemo poboljšati svoj rad i učiniti ga boljim za vas. Pišite nam na web stranici e -pošte