Verificarea dacă este sărbătoare la data specificată folosind VBA în Microsoft Excel

Anonim

În acest articol, vom crea o funcție definită de utilizator (UDF) pentru a verifica dacă este sărbătoare la data specificată, inclusiv sau excluzând sâmbăta și duminica ca concedii săptămânale.

Datele brute pentru acest eșantion constau în date în ordine în coloana A. Vom afla dacă este sărbătoare la data dată, inclusiv sau excluzând săptămâna liberă sâmbătă sau duminică.

Am specificat datele sărbătorilor în coloana A din foaia „Sărbători”.

Am creat funcția personalizată „IsHoliday” pentru a găsi starea sărbătorii la data dată.

Sintaxa funcției

IsHoliday (Data, InclSâmbătă, InclSundays)

InclSdays și InclSundays sunt parametri opționali. În mod implicit, ambele au valoare ADEVĂRATĂ. Pentru a schimba sâmbăta și duminica în zile lucrătoare, schimbați valoarea parametrului respectiv în FALS.

Am folosit mai jos formula din celula C9 pentru a găsi starea sărbătorii pentru data din celula A9 considerând ziua de sâmbătă ca zi lucrătoare.

= IsHoliday (A9, FALSE)

Am folosit mai jos formula din celula D9 pentru a găsi starea sărbătorii pentru data din celula A9 considerând sâmbăta și duminica ca zile lucrătoare.

= IsHoliday (A9, FALSE, FALSE)

Am folosit mai jos formula din celula E9 pentru a găsi starea sărbătorii pentru data din celula A9 considerând sâmbăta și duminica drept concedii săptămânale.

= IsHoliday (A9)

Explicație logică

În funcția „IsHolidays”, mai întâi verificăm dacă data dată din parametru există în lista de sărbători specificată. Dacă data există în lista de sărbători, atunci returnați „Vacanță” ca rezultat. Dacă data nu există în lista de sărbători, verificați dacă data dată este sâmbătă sau duminică. Pe baza parametrului de intrare furnizat, verificați dacă să includeți sau să excludeți o sâmbătă sau o duminică ca sărbători.

Explicarea codului

Setați RngFind = foi de lucru („Sărbători”). Coloane (1). Găsiți (LngDate)

Codul de mai sus este utilizat pentru a găsi locația în care există data specificată în lista de sărbători.

If Not RngFind is Nothing Atunci

OK = „Vacanță”

GoTo Last

End If

Codul de mai sus este utilizat pentru a verifica dacă data specificată există în lista de sărbători. Dacă condiția returnează TRUE, atunci funcția personalizată returnează „Holiday” ca ieșire și controlul se deplasează la ultima linie a UDF.

Vă rugăm să urmați codul de mai jos

 Opțiune Funcție explicită IsHoliday (LngDate as Date, Optional InclSabdays As Boolean = True, _ Optional InclSundays As Boolean = True) 'Declaring variables Dim RngFind As Range Dim OK As String' Inițializarea variabilei OK = „Ziua de lucru” La eroare Reîncepeți Următorul ' Găsirea locației în care există data specificată în foaia Holidays Set RngFind = Worksheets ("Holidays"). Coloane (1). Find (LngDate) On Error GoTo 0 'Verificarea dacă este vacanță la data dată Dacă nu RngFind is Nothing Apoi OK = "Vacanță" GoTo Last End If 'Verificarea dacă este sâmbătă la data dată Dacă Incldays Sâmbătă Then If Weekday (LngDate, 2) = 6 Then OK = "Holiday" GoTo Last End If End If' Verificarea dacă este duminică pe dată dată If InclSundays Then If Weekday (LngDate, 2) = 7 Then OK = "Holiday" End If End If Last: IsHoliday = OK End Function 

Dacă ți-a plăcut acest blog, distribuie-l prietenilor tăi de pe Facebook. De asemenea, ne puteți urmări pe Twitter și Facebook.

Ne-ar plăcea să aflăm de la dvs., să ne anunțați cum putem îmbunătăți munca noastră și o putem îmbunătăți. Scrieți-ne pe site-ul de e-mail