I denne artikel opretter vi en brugerdefineret funktion (UDF) for at tælle antallet af arbejdsdage mellem de angivne datoer, inklusive eller eksklusive lørdage og søndage som fridage.
Rådata for dette eksempel består af en startdato og en slutdato. Vi vil tælle antallet af arbejdsdage mellem disse datoer.
Vi har angivet feriedatoer i kolonnen A i bladet "Ferie".
Excel har en indbygget funktion, NETWORKDAYS til at tælle antallet af arbejdsdage mellem intervallet.
Syntaks for NETWORKDAYS -funktionen
NETWORKDAYS (StartDate, EndDate, [Holidays])
Denne funktion ekskluderer den dato, der er angivet på ferielisten, mens antallet af arbejdsdage tælles.
Denne funktion betragter lørdage og søndage som week off som standard, så vi kan ikke tælle antallet af arbejdsdage, hvis vi kun har en uge fri.
Vi har oprettet "CountWorkingDays" brugerdefineret funktion til at tælle antallet af arbejdsdage mellem intervallet. Denne brugerdefinerede funktion håndterer problemet med NETWORKDAYS -funktionen. I denne funktion kan vi tælle antallet af arbejdsdage, selvom der kun er en uge fri enten lørdag eller søndag.
Syntaks for brugerdefineret funktion
CountWorkingDays (StartDate, EndDate, InclSaturdays, InclSundays)
InclSaturdays og InclSundays er valgfrie parametre. Som standard har begge SANDE værdier. Hvis du vil ændre lørdage og søndage til arbejdsdage, skal du ændre værdien af den respektive parameter til FALSK.
Microsoft introducerede NETWORKDAYS.INTL -funktionen med Excel 2010. Denne funktion håndterer problemet med NETWORKDAYS -funktionen. I denne funktion kan vi angive ugedage. Vi kan enten angive en eller to dage som uge.
Syntaks for NETWORKDAYS.INTL -funktionen
NETWORKDAYS.INTL (StartDate, EndDate, [Weekend], [Holidays])
I weekendparameteren kan vi angive ugedage.
I dette eksempel vil vi bruge alle de tre ovennævnte funktioner til at tælle antallet af arbejdsdage.
Logisk forklaring
I funktionen "CountWorkingDays" kontrollerer vi først, om en given dato i parameteren findes i den angivne ferieliste. Hvis datoen findes på ferielisten, tælles den dag ikke med i antallet af arbejdsdage. Hvis datoen ikke findes på ferielisten, skal du kontrollere, om den angivne dato er lørdag eller søndag. Baseret på den angivne inputparameter, skal du kontrollere, om du skal inkludere eller ekskludere lørdage eller søndage som ferie.
Kode forklaring
Indstil RngFind = regneark ("helligdage"). Kolonner (1). Find (i)
Ovenstående kode bruges til at finde det sted, hvor den angivne dato findes i ferielisten.
Hvis ikke RngFind er ingenting
GoTo ForLast
Afslut Hvis
Ovenstående kode bruges til at kontrollere, om den angivne dato findes på ferielisten. Hvis betingelsen returnerer SAND, tælles den dag ikke med i antallet af arbejdsdage.
Følg venligst nedenstående for koden
Option Eksplicit funktion CountWorkingDays (StartDate As Long, EndDate As Long, Valgfri InclSaturdays As Boolean = True, _ Valgfri InclSundays As Boolean = True) 'Deklarerende variabler Dim RngFind som Range Dim i Så længe For i = StartDate To EndDate On Error Resume Next' Find den placering, hvor den angivne dato findes i feriedokumentet Indstil RngFind = Worksheets ("helligdage"). Kolonner (1) .Find (i) On Error GoTo 0 'Kontrol af, om det er ferie på den givne dato Hvis ikke RngFind er ingenting Derefter GoTo ForLast End If 'Kontrol af, om det er lørdag på den givne dato If InclSaturdays Then If Weekday (i, 2) = 6 Så GoTo ForLast End If End If' Checking it is Sunday on given date If InclSundays Then If Weekday (i, 2) = 7 Gå derefter til ForLast End If End If CountWorkingDays = CountWorkingDays + 1 ForLast: Next End -funktion
Hvis du kunne lide denne blog, kan du dele den med dine venner på Facebook. Du kan også følge os på Twitter og Facebook.
Vi vil meget gerne høre fra dig, lad os vide, hvordan vi kan forbedre vores arbejde og gøre det bedre for dig. Skriv til os på e -mail -stedet