2009

Nov

7

Av

Vi har fått många förfrågningar om hur man räknar fram antal arbetsdagar mellan två datum. Arbetsdagar kan egentligen vara alla veckans dagar, men i det här fallet endast vardagar. Med vardagar menas måndag-fredag, arbetsdagar är helgfria vardagar. 

Tillägg 2010-01-18: Vi har gjort en web-tillämpning så att du kan räkna ut antal arbetsdagar mellan godtyckliga datum. Web-tillämpningen använder FileMaker och beräkningsfunktionerna i den här artikeln, förutom att startdatum är inkluderat i antalet. Web-tillämpningen finns här.

Tillägg 2011-04-06: Den populära webbtjänsten för att räkna antal arbetsdagar finns nu även som app till din iPhone. Ladda ner den här!

Tillägg 2013-02-20: Du kan läsa mer om iPhone-appen för att räkna antal arbetsdagar här: www.arbetsdag.se

Som mycket annat går det att göra med FileMaker. Ett första steg är att räkna antal vardagar mellan datum, utan hänsyn till helgdagar. Det finns formler som gör det, följande beräkningsformel är hämtad från FileMakers hjälpsidor:

Vardagar = 
Int((Slutdatum - Startdatum)/7) * 5 + 
If(DayofWeek(Slutdatum) < DayofWeek(Startdatum);
Min(5; DayofWeek(Slutdatum) - 1) + Max(0; 6-DayofWeek(Startdatum));
If(DayofWeek(Startdatum) < 7; Min(6;DayofWeek(Slutdatum)) - DayofWeek(Startdatum); 0))

Formeln beräknar först antal hela veckor med 5 vardagar i varje vecka och korrigerar sedan antal dagar i första och sista veckan.

Det andra steget är lite mer komplicerat (som om formlerna var “lätta”) och kräver en lista med helgdagar. Det är inte så lätt att räkna fram helgdagar inom ett intervall eftersom de “flyttar” sig år från år. Jag använder vår metod, som jag beskrivit tidigare, för att räkna helgdagar och genererar en tabell med de helgdagar som finns. Det kan man göra flera år framåt för att slippa tänka på det.

Helgdagarna sparar jag i en ny tabell som jag kallar “Helgdagar” med fälten Datum och Löpnummer. Löpnumret är viktigt och måste vara löpande i stigande ordning när tabellen är sorterad i stigande datumordning. Löpnumret används för att räkna antal helgdagar mellan datumen. Lägger du till egna fält i helgdagstabellen kan du uppdatera löpnumret.

Manuset för att skapa helgdagar använder den egna funktionen mvHoliday och ser ut så här:

manushelgdag

Manuset skapar helgdagar från 1 januari 2009 fram till år 2020. Manuset består av en loop som går genom samtliga datum, varje gång det är en helgdag skapas en post i helgdagstabellen. Det tar ca 10 sekunder att köra det på en normal dator.

Skapa sedan 2 relationer mellan fältet Startdatum och Datum-fältet i Helgdagar, och mellan Slutdatum och Datum-fältet i Helgdagar, enligt nedan:

relationsdiagram

Relationerna ska vara likadana, Startdatum/Slutdatum ska vara större lika Datum i Helgdagar.

relation1

För säkerhets skull sorterar jag relationerna efter fältet Datum i Helgdagar, i fallande datumordning.

relationsort

Till sist definierar jag beräkningsformeln för fältet Arbetsdagar, som alltså blir helgfria vardagar.

Arbetsdagar =
Vardagar - (HelgdagarSlut::Löpnummer - HelgdagarStart::Löpnummer)

För egna funktioner behöver du FileMaker Pro Advanced. Om du inte har det kan du ladda ner exempeldatabas med helgdagar fram till 2020 här: Arbetsdagar.zip (10,01 kb)

Många undrar hur många arbetsdagar det är under 2009. Svaret är 251 arbetsdagar under 2009. För 2010 blir det 253 arbetsdagar.

Tillägg 2010-01-18: Vi har gjort en web-tillämpning så att du kan räkna ut antal arbetsdagar mellan godtyckliga datum. Web-tillämpningen använder FileMaker och beräkningsfunktionerna i den här artikeln, förutom att startdatum är inkluderat i antalet. Web-tillämpningen finns här.

Tillägg 2011-04-06: Den populära webbtjänsten för att räkna antal arbetsdagar finns nu även som app till din iPhone. Ladda ner den här!

3 kommentarer till ”Räkna arbetsdagar mellan datum”

  1. Marie Olsson

    Hej,

    Jag är bönhörd. Vilket fantastiskt program, stort tack!

    Detta hjälper mig MYCKET i mitt arbete med att räkna fram doktoranders förlängning av dagar där vi ska räkna på arbetsdagar.
    Mvh
    Marie

    Reply

Skriv en kommentar

  • (will not be published)
  • 7 − = zero

Läs också: