Kontrola, či sú v uvedený dátum prázdniny, pomocou VBA v programe Microsoft Excel

Anonim

V tomto článku vytvoríme funkciu definovanú používateľom (UDF), aby sme skontrolovali, či sú v určený deň prázdniny vrátane sobôt a nedieľ ako voľných dní.

Surové údaje pre túto vzorku pozostávajú z dátumov zoradených v stĺpci A. Zistíme, či sú v daný deň sviatky, vrátane týždňa voľna v sobotu alebo v nedeľu.

Dátumy sviatkov sme špecifikovali v stĺpci A na liste „Sviatky“.

Vytvorili sme vlastnú funkciu „IsHoliday“ na vyhľadanie stavu dovolenky v daný deň.

Syntax funkcie

IsHoliday (dátum, vrátane sobôt, vrátane nedieľ)

InclSaturdays a InclSundays sú voliteľné parametre. V predvolenom nastavení majú obe PRAVDU. Ak chcete zmeniť sobotu a nedeľu na pracovné dni, zmeňte hodnotu príslušného parametra na hodnotu FALSE.

Nasledujúci vzorec v bunke C9 sme použili na nájdenie prázdninového dátumu v bunke A9, pričom sobotu považujeme za pracovný deň.

= IsHoliday (A9, FALSE)

Na nájdenie sviatku pre dátum v bunke A9 sme použili nižšie uvedený vzorec v bunke D9, pričom za pracovné dni sa považujú soboty a nedele.

= IsHoliday (A9, FALSE, FALSE)

Na nájdenie prázdninového dátumu v bunke A9 sme použili nižšie uvedený vzorec v bunke E9, pričom soboty a nedele považujeme za voľné dni.

= IsHoliday (A9)

Logické vysvetlenie

Vo funkcii „IsHoliday“ najskôr skontrolujeme, či daný dátum v parametri existuje v uvedenom zozname sviatkov. Ak v zozname sviatkov existuje dátum, vráťte ako výstup „Prázdniny“. Ak dátum neexistuje v zozname prázdnin, skontrolujte, či je daný dátum sobota alebo nedeľa. Na základe poskytnutého vstupného parametra skontrolujte, či sa má sobota alebo nedeľa zahrnúť ako sviatok alebo nie.

Vysvetlenie kódu

Nastaviť RngFind = pracovné listy („prázdniny“). Stĺpce (1). Nájsť (LngDate)

Vyššie uvedený kód sa používa na nájdenie miesta, kde je uvedený dátum v zozname prázdnin.

Ak nie je RngFind nič, potom

OK = "Dovolenka"

GoTo Last

Koniec Ak

Vyššie uvedený kód sa používa na kontrolu, či je v zozname sviatkov uvedený dátum. Ak podmienka vráti hodnotu TRUE, potom vlastná funkcia vráti ako výstup „Dovolenka“ a ovládací prvok sa posunie na posledný riadok UDF.

Pri kódovaní postupujte podľa nižšie uvedených pokynov

 Možnosť Explicitná funkcia IsHoliday (LngDate ako dátum, voliteľné InclSaturdays As Boolean = True, _ Optional InclSundays As Boolean = True) 'Declaring variables Dim RngFind As Range Dim OK OK ako String' Initializing the variable OK = "Working day" On Error Resume Next ' Nájdenie miesta, kde v hárku Sviatky existuje určený dátum RngFind = Pracovné listy ("Prázdniny"). Stĺpce (1). Nájsť (LngDate) Pri chybe GoTo 0 'Kontrola, či je v daný dátum sviatok Ak nie RngFind nie je nič Potom OK = „Prázdniny“ GoTo Last End If 'Kontrola, či je sobota v daný dátum Ak InclSaturdays Then If Weekday (LngDate, 2) = 6 Then OK = "Holiday" GoTo Last End If End If' Kontrola, či je nedeľa daný dátum, ak vrátane nedieľ, potom ak pracovný deň (LngDate, 2) = 7, potom OK = "sviatok", koniec, ak koniec, ak posledný: IsHoliday = OK, ukončenie funkcie 

Ak sa vám tento blog páčil, zdieľajte ho so svojimi priateľmi na Facebooku. Môžete nás tiež sledovať na Twitteri a Facebooku.

Budeme radi, ak sa nám ozvete, dajte nám vedieť, ako môžeme zlepšiť našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku