U ovom ćemo članku stvoriti Korisnički definiranu funkciju (UDF) za brojanje broja radnih dana između navedenih datuma, uključujući ili isključujući subote i nedjelje kao tjedne slobodne dane.
Sirovi podaci za ovaj primjer sastoje se od datuma početka i datuma završetka. Želimo brojati broj radnih dana između ovih datuma.
Datume odmora naveli smo u koloni A u listu „Praznici“.
Excel ima ugrađenu funkciju NETWORKDAYS za brojanje broja radnih dana između intervala.
Sintaksa funkcije NETWORKDAYS
NETWORKDAYS (StartDate, EndDate, [Holidays])
Ova funkcija isključuje datum naveden na popisu blagdana, a broji broj radnih dana.
Ova funkcija prema zadanim postavkama smatra da su subote i nedjelje slobodni tjedni, pa ne možemo računati broj radnih dana, u slučaju da imamo samo jedan tjedan odmora.
Napravili smo prilagođenu funkciju "CountWorkingDays" za brojanje broja radnih dana između intervala. Ova prilagođena funkcija rješava problem funkcije NETWORKDAYS. U ovoj funkciji možemo računati broj radnih dana čak i ako je slobodan samo jedan tjedan u subotu ili nedjelju.
Sintaksa prilagođene funkcije
CountWorkingDays (StartDate, EndDate, InclSaturdays, InclSundays)
InclSaturdays i InclSundays su izborni parametri. Prema zadanim postavkama, obje imaju TRUE vrijednosti. Za promjenu subote i nedjelje u radne dane, promijenite vrijednost odgovarajućeg parametra na FALSE.
Microsoft je predstavio funkciju NETWORKDAYS.INTL s Excelom 2010. Ova funkcija rješava problem funkcije NETWORKDAYS. U ovoj funkciji možemo odrediti slobodne dane. Možemo odrediti jedan ili dva dana kao slobodan tjedan.
Sintaksa funkcije NETWORKDAYS.INTL
NETWORKDAYS.INTL (Datum početka, Datum završetka, [Vikend], [Praznici])
U parametru vikenda možemo odrediti slobodne dane.
U ovom primjeru koristit ćemo sve gore navedene tri funkcije za brojanje broja radnih dana.
Logično objašnjenje
U funkciji “CountWorkingDays” prvo provjeravamo postoji li navedeni datum u parametru na navedenom popisu praznika. Ako datum postoji na popisu praznika, tada se taj dan ne računa u broj radnih dana. Ako datum ne postoji na popisu praznika, provjerite je li navedeni datum subota ili nedjelja. Na temelju navedenog ulaznog parametra provjerite želite li uključiti ili isključiti subotu ili nedjelju kao praznik.
Objašnjenje koda
Postavi RngFind = Radne listove ("Praznici"). Stupci (1). Pronađite (i)
Gornji kôd koristi se za pronalaženje lokacije na kojoj navedeni datum postoji na popisu praznika.
Ako nije, tada RngFind nije ništa
Idi na posljednje
Završi ako
Gornji kôd koristi se za provjeru postoji li navedeni datum na popisu praznika. Ako se uvjet vrati TRUE, tada se taj dan ne računa u broj radnih dana.
Molimo slijedite dolje za kôd
Opcija Eksplicitna funkcija CountWorkingDays (StartDate As Long, EndDate As Long, Optional InclSaturdays As Boolean = True, _ Optional InclSundays As Boolean = True) 'Deklariranje varijabli Dim RngFind kao raspon Dim i As For i = StartDate To EndDate On Error Resume Next' Pronalaženje lokacije na kojoj postoji navedeni datum u tabeli za praznike Postavite RngFind = Radne listove ("Praznici"). Stupci (1). Pronađite (i) On Error GoTo 0 'Provjera je li blagdan na navedeni datum ako nije RngFind nije ništa Zatim Idi na ForLast End If 'Provjeravam je li subota na navedeni datum If InclSaturdays Then If Weekday (i, 2) = 6 Then GoTo ForLast End If End If' Provjerava je li nedjelja na navedeni datum If InclSundays Then If Weekday (i, 2) = 7 Zatim Idi na ForLast End If End Ako je CountWorkingDays = CountWorkingDays + 1 ForLast: Next 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