Selles artiklis loome kasutaja määratud funktsiooni (UDF), mis loeb määratud kuupäevade vaheliste tööpäevade arvu, kaasa arvatud laupäevad ja pühapäevad või mitte.
Selle näite toorandmed koosnevad algus- ja lõppkuupäevast. Tahame lugeda nende päevade vaheliste tööpäevade arvu.
Puhkuse kuupäevad oleme täpsustanud lehe „Pühad” veerus A.
Excelil on sisseehitatud funktsioon NETWORKDAYS, et lugeda intervallide vaheliste tööpäevade arvu.
Funktsiooni NETWORKDAYS süntaks
VÕRGUPÄEVAD (alguskuupäev, lõppkuupäev, [pühad])
See funktsioon välistab loendis Pühad määratud kuupäeva, lugedes samal ajal tööpäevade arvu.
See funktsioon peab laupäevi ja pühapäevi vaikimisi nädalapäevadeks, seega ei saa me tööpäevade arvu kokku lugeda, kui meil on ainult üks nädal vaba.
Oleme loonud kohandatud funktsiooni „CountWorkingDays”, et lugeda intervallide vaheliste tööpäevade arvu. See kohandatud funktsioon lahendab funktsiooni NETWORKDAYS probleemi. Selle funktsiooni puhul saame lugeda tööpäevade arvu isegi siis, kui laupäeval või pühapäeval on ainult üks nädal vaba.
Kohandatud funktsiooni süntaks
CountWorkingDays (alguskuupäev, lõppkuupäev, sh laupäevad, sh pühapäevad)
InclSaturdays ja InclSundays on valikulised parameetrid. Vaikimisi on mõlemal TRUE väärtused. Laupäevade ja pühapäevade muutmiseks tööpäevadeks muutke vastava parameetri väärtuseks VÄÄR.
Microsoft tutvustas programmiga Excel 2010. NETWORKDAYS.INTL. See funktsioon lahendab funktsiooni NETWORKDAYS probleemi. Selle funktsiooni abil saame määrata nädalapäevad. Võime määrata puhkepäevaks ühe või kaks päeva.
Funktsiooni NETWORKDAYS.INTL süntaks
NETWORKDAYS.INTL (alguskuupäev, lõppkuupäev, [nädalavahetus], [pühad])
Nädalavahetuse parameetris saame määrata nädalapäevad.
Selles näites kasutame kõiki ülaltoodud kolme funktsiooni tööpäevade arvu loendamiseks.
Loogiline seletus
Funktsioonis „CountWorkingDays” kontrollime kõigepealt, kas parameetris antud kuupäev on määratud puhkuste loendis olemas. Kui kuupäev on puhkuste loendis olemas, siis seda päeva tööpäevade hulka ei arvestata. Kui kuupäeva puhkusenimekirjas pole, kontrollige, kas antud kuupäev on laupäev või pühapäev. Kontrollige sisestatud parameetri põhjal, kas lisada laupäevad või pühapäevad puhkusena või mitte.
Koodi selgitus
Määra RngFind = Töölehed ("Pühad"). Veerud (1). Leia (i)
Ülaltoodud koodi kasutatakse puhkuse loendis asukoha leidmiseks, kus määratud kuupäev on olemas.
Kui ei, siis pole RngFind midagi
GoTo ForLast
Lõpp Kui
Ülaltoodud koodi abil kontrollitakse, kas puhkuste loendis on määratud kuupäev. Kui tingimus tagastab tõe, siis seda päeva ei arvestata tööpäevade hulka.
Palun järgige koodi allpool
Valik Selgesõnaline funktsioon CountWorkingDays (alguskuupäev nii pikk, lõppkuupäev nii pikk, valikuline, sh laupäevad kui loogiline = tõene, _ valikuline kaasatud pühapäevad kui loogiline = tõene) 'Muutujate deklareerimine Dim RngFind As Range Dim i As Long For i = StartDate To EndDate On Error Resume Next' Asukoha leidmine, kus määratud kuupäev on lehel Pühad määratud RngFind = Töölehed ("Pühad"). Veerud (1). Leia (i) On Error GoTo 0 'Kontrollimine, kas antud kuupäeval on puhkus Kui mitte RngFind pole midagi Seejärel minge viimasele lõpule, kui kontrollite, kas antud kuupäeval on laupäev. Kui ka laupäeviti siis kui nädalapäev (i, 2) = 6, siis minge edasi 2) = 7 Siis Mine Viimase lõpu lõppu Kui lõpp Kui CountWorkingDays = CountWorkingDays + 1 ForLast: Järgmine lõppfunktsioon
Kui teile see blogi meeldis, jagage seda oma sõpradega Facebookis. Lisaks saate meid jälgida Twitteris ja Facebookis.
Tahaksime sinust kuulda, andke meile teada, kuidas saaksime oma tööd paremaks muuta ja teie jaoks paremaks muuta. Kirjuta meile meilisaidile