Patikrinkite, ar nurodytą dieną yra atostogos, naudojant „Microsoft Excel“ VBA

Anonim

Šiame straipsnyje mes sukursime vartotojo apibrėžtą funkciją (UDF), kad patikrintume, ar nurodytą dieną yra atostogos, įskaitant šeštadienius ir sekmadienius kaip savaitės pertraukas.

Neapdorotus šio mėginio duomenis sudaro datos iš eilės A stulpelyje. Rasime, ar nurodytą dieną yra atostogos, įskaitant šeštadienį ar sekmadienį.

Atostogų datas nurodėme A skiltyje „Šventės“.

Sukūrėme „IsHoliday“ pasirinktinę funkciją, norėdami rasti atostogų būseną nurodytą dieną.

Funkcijos sintaksė

„IsHolidays“ (data, įskaitant šeštadienius, įskaitant sekmadienius)

„InclSaturdays“ ir „InclSundays“ yra pasirenkami parametrai. Pagal numatytuosius nustatymus abu turi TRUE reikšmę. Norėdami pakeisti šeštadienį ir sekmadienį į darbo dienas, pakeiskite atitinkamo parametro reikšmę į FALSE.

Mes naudojome toliau pateiktą formulę C9 langelyje, norėdami rasti datos atostogų būseną A9 langelyje, šeštadienį laikydami darbo diena.

= IsHolidays (A9, FALSE)

Mes naudojome žemiau esančią formulę D9 langelyje, norėdami rasti datos atostogų būseną A9 langelyje, šeštadienius ir sekmadienius laikydami darbo dienomis.

= IsHolidays (A9, FALSE, FALSE)

Mes naudojome toliau pateiktą formulę E9 langelyje, norėdami rasti datos atostogų būseną A9 langelyje, šeštadienius ir sekmadienius laikydami savaitės pertraukomis.

= IsHolidays (A9)

Loginis paaiškinimas

Funkcijoje „IsHoliday“ pirmiausia patikriname, ar nurodyta parametro data yra nurodytame atostogų sąraše. Jei atostogų sąraše yra data, grąžinkite „Atostogos“ kaip išvestį. Jei atostogų sąraše nėra datos, patikrinkite, ar nurodyta data yra šeštadienis ar sekmadienis. Remdamiesi pateiktu įvesties parametru, patikrinkite, ar šeštadienį ar sekmadienį įtraukti į šventes, ar neįtraukti.

Kodo paaiškinimas

Nustatykite RngFind = darbalapiai („Šventės“). Stulpeliai (1). Rasti (LngDate)

Viršuje esantis kodas naudojamas surasti vietą, kurioje atostogų sąraše yra nurodyta data.

Jei ne, tada „RngFind“ yra niekas

Gerai = "atostogos"

„GoTo Last“

Pabaiga Jei

Aukščiau pateiktas kodas naudojamas patikrinti, ar atostogų sąraše yra nurodyta data. Jei sąlyga grąžina TRUE, tada pasirinktinė funkcija grąžina „Holiday“ kaip išvestį ir valdiklis pereina į paskutinę UDF eilutę.

Sekite toliau pateiktą kodą

 Pasirinkimo aiški funkcija „IsHoliday“ (LngDate As Date, Optional InclSaturdays As Boolean = True, _ Optional InclSundays As Boolean = True) 'Deklaruojantys kintamieji Dim RngFind As Diapazonas Gerai kaip eilutė' Kintamojo inicijavimas OK = "Darbo diena" Klaidos atnaujinimas toliau ' Raskite vietą, kurioje nurodyta data yra atostogų lape. Nustatykite RngFind = darbalapiai („Šventės“). Stulpeliai (1). Rasti (LngDate) Apie klaidą „GoTo 0“ Tikrinama, ar nurodytą dieną yra atostogos, jei ne „RngFind Is Nothing“ Tada Gerai = "Atostogos" GoTo Paskutinė pabaiga Jei "Tikrinama, ar tam tikrą dieną šeštadienis Jei Įtrauktas Šeštadienis Tada Jei Savaitės diena (LngDate, 2) = 6 Tada Gerai =" Atostogos "GoTo Paskutinė pabaiga Jei baigiasi Jei tikrinama, ar sekmadienis nurodyta data If InclSundays then If Weekday (LngDate, 2) = 7 Tada OK = "Holiday" Pabaiga Jei End End Jei Paskutinis: IsHolidays = OK End Function 

Jei jums patiko šis tinklaraštis, pasidalykite juo su draugais „Facebook“. Be to, mus galite sekti „Twitter“ ir „Facebook“.

Mes norėtume išgirsti jūsų nuomonę, praneškite mums, kaip galime pagerinti savo darbą ir padaryti jį geresnį. Rašykite mums el