Excel funktionerna WORKDAY och NETWORKDAYS för att beräkna arbetsdagar

  • Dela Detta
Michael Brown

Den här korta handledningen förklarar hur du använder Excel-funktionerna NETWORKDAYS och WORKDAY för att beräkna arbetsdagar med anpassade helgparametrar och helgdagar.

Microsoft Excel har två funktioner som är speciellt utformade för att beräkna veckodagar - WORKDAY och NETWORKDAYS.

ARBETSDAG funktionen returnerar ett datum N arbetsdagar i framtiden eller i det förflutna och du kan använda den för att lägga till eller dra ifrån arbetsdagar till ett givet datum.

Användning av NETWORKDAYS kan du beräkna antalet arbetsdagar mellan två datum som du anger.

I Excel 2010 och senare finns mer kraftfulla modifieringar av de ovannämnda funktionerna, WORKDAY.INTL och NETWORKDAYS.INTL, som låter dig definiera vilka och hur många dagar som är helgdagar.

Nu ska vi titta närmare på varje funktion och se hur du kan använda den för att beräkna arbetsdagar i dina Excel-arbetsblad.

    Excel WORKDAY-funktionen

    Excel-funktionen WORKDAY returnerar ett datum som ligger ett visst antal arbetsdagar före eller före startdatumet. Den utesluter helger och eventuella helgdagar som du anger.

    Funktionen WORKDAY är avsedd för att beräkna arbetsdagar, milstolpar och förfallodagar enligt den vanliga arbetskalendern, med lördag och söndag som helgdagar.

    WORKDAY är en inbyggd funktion i Excel 2007 - 365. I tidigare versioner måste du aktivera Analysis ToolPak.

    När du använder WORKDAY i Excel måste du ange följande argument:

    WORKDAY(start_datum, dagar, [helgdagar])

    De två första argumenten är obligatoriska och det sista är valfritt:

    • Start_datum - datum från vilket man ska börja räkna veckodagar.
    • Dagar - antalet arbetsdagar som ska läggas till eller dras av från start_date. Ett positivt tal ger ett framtida datum, ett negativt tal ger ett tidigare datum.
    • Semester - En valfri lista över datum som inte ska räknas som arbetsdagar. Detta kan antingen vara ett intervall av celler som innehåller de datum som du vill utesluta från beräkningar eller en konstant matris med löpnummer som representerar datumen.

    Nu när du känner till grunderna ska vi se hur du kan använda funktionen WORKDAY i dina Excel-arbetsblad.

    Hur du använder WORKDAY för att lägga till eller dra ifrån arbetsdagar till datumet

    Om du vill beräkna arbetsdagar i Excel följer du dessa enkla regler:

    • Till Lägg till arbetsdagar, ange ett positivt tal som dagar argument i en formel för WORKDAY.
    • Till subtrahera arbetsdagar, använda ett negativt tal i dagar argument.

    Anta att du har ett startdatum i cell A2, en lista med helgdagar i cellerna B2:B5 och att du vill ta reda på datum 30 arbetsdagar i framtiden och tidigare. Du kan göra detta med följande formler:

    För att lägga till 30 arbetsdagar till startdatumet, exklusive helgdagar i B2:B5:

    =ARBETSDAG(A2, 30, B2:B5)

    För att subtrahera 30 arbetsdagar från startdatumet, exklusive helgdagar i B2:B5:

    =ARBETSDAG(A2, -30, B2:B5)

    För att beräkna veckodagar baserat på aktuellt datum , använda funktionen TODAY() som startdatum:

    Om du vill lägga till 30 arbetsdagar till dagens datum:

    =ARBETSDAG(TODAY(), 30)

    För att subtrahera 30 arbetsdagar från dagens datum:

    =ARBETSDAG(TODAY(), -30)

    Om du vill ange startdatumet direkt i formeln använder du funktionen DATE:

    =ARBETSDAG(DATUM(2015,5,6), 30)

    Följande skärmdump visar resultatet av alla dessa och några fler formler för WORKDAY:

    Och naturligtvis kan du ange antalet arbetsdagar som ska läggas till eller dras av från startdatumet i en cell och sedan hänvisa till den cellen i formeln, till exempel:

    = ARBETSDAG(A2, C2)

    Där A2 är startdatumet och C2 är antalet helgfria dagar efter (negativa siffror) eller före (positiva siffror) startdatumet, inga helgdagar att utesluta.

    Tips: I Excel 365 och 2021 kan du använda WORKDAY i kombination med SEQUENCE för att skapa en serie arbetsdagar.

    Excel funktion WORKDAY.INTL

    WORKDAY.INTL är en mer kraftfull modifiering av WORKDAY-funktionen som fungerar med anpassade helgparametrar Liksom WORKDAY returnerar den ett datum som ligger ett visst antal arbetsdagar i framtiden eller i det förflutna, men låter dig bestämma vilka dagar i veckan som ska betraktas som helgdagar.

    Funktionen WORKDAY.INTL infördes i Excel 2010 och är därför inte tillgänglig i tidigare Excel-versioner.

    Syntaxen för Excel-funktionen WORKDAY.INTL är följande:

    WORKDAY.INTL(start_datum, dagar, [helg], [helgdagar])

    De två första argumenten är nödvändiga och liknar WORKDAYs:

    Start_datum - det första datumet.

    Dagar - antalet arbetsdagar före (negativt värde) eller efter (positivt värde) startdatumet. Om dagar argumentet anges som ett decimaltal, trunker det till heltal.

    De två sista argumenten är valfria:

    Helgen - anger vilka veckodagar som ska räknas som helgdagar. Detta kan vara antingen ett tal eller en sträng, enligt nedan.

    Antal Helgdagar
    1 eller utelämnas Lördag, söndag
    2 Söndag, måndag
    3 Måndag, tisdag
    4 Tisdag, onsdag
    5 Onsdag, torsdag
    6 Torsdag, fredag
    7 Fredag, lördag
    11 Endast på söndag
    12 Endast på måndagar
    13 Endast på tisdag
    14 Endast på onsdag
    15 Endast på torsdag
    16 Endast på fredag
    17 Endast på lördagar

    Helgens sträng - En serie av sju 0- och 1-tal som representerar sju dagar i veckan, med början på måndag. 1 representerar en arbetsfri dag och 0 representerar en arbetsdag. Till exempel:

    • "0000011" - Lördag och söndag är helger.
    • "1000001" - Måndag och söndag är helger.

    Vid första anblicken kan helgsträngar verka överflödiga, men jag personligen tycker bättre om den här metoden eftersom du kan skapa en helgsträng i farten utan att behöva komma ihåg några siffror.

    Semester - En valfri lista över datum som du vill utesluta från arbetsdagskalendern. Detta kan vara ett intervall av celler som innehåller datumen, eller en arraykonstant med serievärden som representerar dessa datum.

    Användning av WORKDAY.INTL i Excel - exempel på formler

    Den stora mängd teori som vi just har diskuterat kan tyckas ganska komplicerad och förvirrande, men om du provar dig fram med formlerna blir allting väldigt enkelt.

    I vårt dataset, med startdatumet i cell A2 och en lista över helgdagar i A5:A8, kan vi beräkna arbetsdagar med anpassade helger.

    Till Lägg till 30 arbetsdagar till startdatum, fredag och lördag räknas som helger och helgdagar i A5:A8 är undantagna:

    =WORKDAY.INTL(A2, 30, 7, A5:A8)

    eller .

    =WORKDAY.INTL(A2, 30, "0000110", A5:A8)

    Till subtrahera 30 arbetsdagar från startdatum, söndagar och måndagar räknas som helger och helgdagar i A5:A8 är undantagna:

    =WORKDAY.INTL(A2, -30, 2, A5:A8)

    eller .

    =WORKDAY.INTL(A2, -30, "1000001", A5:A8)

    För att lägga till 10 arbetsdagar till aktuellt datum söndag är den enda helgdagen, inga helgdagar:

    =WORKDAY.INTL(TODAY(), 10, 11)

    eller .

    =WORKDAY.INTL(A2, 10, "0000001")

    I ditt Excel-ark kan formlerna se ut så här:

    Observera: Både Excel-funktionerna WORKDAY och WORKDAY.INTL returnerar serienummer som representerar datum. För att få dessa nummer visade som datum markerar du cellerna med numren och trycker på Ctrl+1 för att öppna Formatera celler dialog. På den Antal Välj Datum i den Kategori: och välj det datumformat du vill ha. Detaljerade steg finns i Hur man ändrar datumformat i Excel.

    Fel i Excel WORKDAY och WORKDAY.INTL

    Om formeln WORKDAY eller WORKDAY.INTL i Excel returnerar ett fel är orsaken sannolikt en av följande:

    #NUM! fel uppstår om antingen:

    • en kombination av start_datum och dagar argumenten resulterar i ett ogiltigt datum, eller
    • helg argumentet i funktionen WORKDAY.INTL är ogiltigt.

    #VALUE! fel uppstår om antingen:

    • start_datum eller något annat värde i semester inte är ett giltigt datum, eller
    • dagar argumentet är icke-numeriskt.

    Excel NETWORKDAYS-funktionen

    Funktionen NETWORKDAYS i Excel returnerar antalet arbetsdagar mellan två datum, exklusive helger och, som tillval, de helgdagar du anger.

    Syntaxen i Excel NETWORKDAYS är intuitiv och lätt att komma ihåg:

    NETWORKDAYS(start_datum, slut_datum, [helgdagar])

    De två första argumenten är obligatoriska och det tredje är frivilligt:

    • Start_datum - Det första datum från vilket arbetsdagarna ska börja räknas.
    • Slutdatum - slutet av den period för vilken du räknar arbetsdagar.

    Både start- och slutdatum räknas in i det returnerade antalet arbetsdagar.

    • Semester - en valfri förteckning över helgdagar som inte ska räknas som arbetsdagar.

    Hur man använder NETWORKDAYS i Excel - exempel på en formel

    Låt oss säga att du har en lista med helgdagar i cellerna A2:A5, startdatum i kolumn B och slutdatum i kolumn C, och att du vill veta hur många arbetsdagar som ligger mellan dessa datum. Det är lätt att räkna ut den lämpliga NETWORKDAYS-formeln:

    =NETWORKDAYS(B2, C2, $A$2:$A$5)

    Observera att Excel-funktionen NETWORKDAYS returnerar ett positivt värde när startdatumet är kortare än slutdatumet och ett negativt värde om slutdatumet är senare än startdatumet (som i rad 5):

    Excel NETWORKDAYS.INTL-funktionen

    Precis som NETWORKDAYS beräknar Excels funktion NETWORKDAYS.INTL antalet veckodagar mellan två datum, men du kan ange vilka dagar som ska räknas som helgdagar.

    Syntaxen för funktionen NETWORKDAYS.INTL är mycket lik NETWORKDAYS', förutom att den har ytterligare en parameter [weekend] som anger vilka veckodagar som ska räknas som helger.

    NETWORKDAYS.INTL( start_datum, slut_datum, [helg], [helgdagar] )

    helg kan acceptera antingen ett nummer eller en sträng. Nummer och helgsträngar är exakt desamma som i helg i funktionen WORKDAY.INTL.

    Funktionen NETWORKDAYS.INTL finns i Excel 365 - 2010.

    Användning av NETWORKDAYS.INTL i Excel - exempel på en formel

    Med hjälp av listan med datum från föregående exempel kan vi beräkna antalet arbetsdagar mellan två datum där söndagen är den enda helgdagen. För detta skriver du nummer 11 i fältet helg i formeln NETWORKDAYS.INTL eller skapa en sträng med sex 0:or och en 1 ("0000001"):

    =NETWORKDAYS.INTL(B2, C2, 11, $A$2:$A$5)

    Eller

    =NETWORKDAYS.INTL(B2, C2, "0000001", $A$2:$A$5)

    Följande skärmdump visar att de båda formlerna ger absolut identiska resultat.

    Hur man markerar arbetsdagar i Excel

    Med hjälp av funktionerna WORKDAY och WORKDAY.INTL kan du inte bara beräkna arbetsdagar i dina Excel-arbetsblad utan också markera dem enligt din affärslogik. För detta skapar du en regel för villkorlig formatering med antingen en WORKDAY- eller WORKDAY.INTL-formel.

    I en lista med datum i kolumn B kan vi till exempel bara markera framtida datum som ligger inom 15 arbetsdagar från dagens datum, exklusive två helgdagar i cellerna A2:A3. Den mest uppenbara formeln som kommer i åtanke är följande:

    =AND($B2>TODAY(), $B2<=WORKDAY(TODAY(), 15, $A$2:$A$3))

    Den första delen av det logiska testet avgränsar tidigare datum, dvs. du kontrollerar om ett datum är lika med eller större än idag: $B2>TODAY(). I den andra delen kontrollerar du om ett datum ligger högst 15 vardagar i framtiden, exklusive helgdagar och angivna helgdagar: $B2<=WORKDAY(TODAY(), 15, $A$2:$A$3)

    Formeln ser korrekt ut, men när du skapar en regel baserad på den kommer du att inse att den markerar fel datum:

    Låt oss försöka ta reda på varför det händer. Problemet ligger inte i funktionen WORKDAY, som någon kanske tror. Funktionen är korrekt, men... vad gör den egentligen? Den returnerar ett datum 15 arbetsdagar från och med nu, exklusive helgdagar (lördag och söndag) och helgdagar i cellerna A2:A3.

    Okej, och vad gör regeln baserad på denna formel? Den markerar ALLA datum som är lika med eller större än idag och mindre än det datum som returneras av funktionen WORKDAY. Ser du? Alla datum! Om du inte vill färglägga helger och helgdagar måste du uttryckligen säga åt Excel att inte göra det. Vi lägger till ytterligare två villkor till vår formel:

    • Funktionen WEEKDAY för att utesluta helger: WEEKDAY($B2, 2)<6
    • COUNTIF-funktionen för att utesluta helgdagar: COUNTIF($A$2:$A$3, $B2)=0

    Som framgår av nedanstående skärmdump fungerar den förbättrade formeln perfekt:

    =AND($B2>TODAY(), $B2<=WORKDAY(TODAY(), 15, $A$2:$A$3), COUNTIF($A$2:$A$3, $B2)=0, WEEKDAY($B2, 2)<6)

    Som du ser gör funktionerna WORKDAY och WORKDAY.INTL det snabbt och enkelt att beräkna arbetsdagar i Excel. Naturligtvis kommer dina verkliga formler att vara mer sofistikerade, men att känna till grunderna är till stor hjälp, eftersom du kan komma ihåg endast en liten uppsättning viktiga saker och härleda resten. Jag tackar dig för att du läste och hoppas att vi ses på vår blogg nästa vecka!

    Michael Brown är en hängiven teknikentusiast med en passion för att förenkla komplexa processer med hjälp av mjukvaruverktyg. Med mer än ett decenniums erfarenhet inom teknikbranschen har han finslipat sina kunskaper i Microsoft Excel och Outlook, samt Google Sheets och Docs. Michaels blogg är tillägnad att dela med sig av sin kunskap och expertis med andra, och tillhandahåller lätta att följa tips och handledningar för att förbättra produktiviteten och effektiviteten. Oavsett om du är en erfaren proffs eller nybörjare, erbjuder Michaels blogg värdefulla insikter och praktiska råd för att få ut det mesta av dessa viktiga programvaruverktyg.