Excelskolen 8 – Beregn arbejdstimer mellem to tider

Del denne artikelShare on Facebook1Tweet about this on TwitterShare on Google+0

Med formlen NETWORKDAYS kan du nemt i Excel beregne antal arbejdsdage mellem to datoer. Men hvordan beregner man egentlig antal arbejdstimer mellem to tidspunkter. I denne del af Excelskolen vil jeg komme med nogle løsninger.

På arbejdspladser skal man ofte holde styr på hvor meget tid man bruger på de enkelte opgaver. Derfor er det ofte muligt at finde det tidspunkt hvor nogen er gået igang med en opgave og det tidspunkt hvor de har sluttet opgaven igen. Hvis starttiden findes i feltet A1 og sluttiden i A2, så vil du så kunne beregne antallet af dage mellem de to tidspunkter, simpelthen ved at trække dem fra hinanden:

=B2-B1

Hvis starttiden for eksempel er “03/08/2017 06.00.00” og sluttiden er “04/08/2017 06.38.00”, så vil svaret blive 1,0264 der er antallet af dage mellem de to dage angivet i decimaltal. For at få det regnet om til antal timer kan du gange med 24, for antallet af minutter ganger du yderligere med 60 og for antallet af sekunder ganger du yderligere med 60.

Problemet for de fleste virksomheder er blot, at hvis nogen går igang med en opgave fredag eftermiddag og afslutter den mandag morgen, så tæller hele weekenden med. Det betyder at en opgave der egentlig ser ud til at tage lang tid, reelt er gået hurtig.

NETWORKDAYS

Hvis det blot er antal arbejdsdage man er interesseret i, har Excel en funktion der hedder NETWORKDAYS. På Dansk hedder den ANTAL.ARBEJDSDAGE.

=NETWORKDAYS(B1;B2)

Ved brug af denne formel, kommer svaret ud i arbejdsdage i stedet. Dvs. den trækker weekenden fra. Dette retter en del op på tingene. Desværre viser den resultatet i hele arbejdsdage og ikke i decimaltal og du skal trække 1 fra for ofte at få det i reelle arbejdsdage, da den tæller antallet af arbejdsdage opgaven har været inde over. Så hvis den starter den 3/7 og slutter den 4/7 har man reelt måske brugt én arbejdsdag, men NETWORKDAYS vil skrive to fordi det rækker ind over to arbejdsdage.

Brug NETWORKDAYS til at beregne arbejdstimer

Der findes rundt omkring forskellige bud på formler, hvor man kan beregne antallet af arbejdstimer mellem to tidspunkter. Altså hvis man angiver en arbejdstid, som f.eks. fra kl. 6 om morgenen til kl. 16 om eftermiddagen. Her er en af de formler der ser ud til at virke:

=((NETWORKDAYS(B1;B2)-2)*(B4-B3)/24+B4/24-MOD(B1;1)+MOD(B2;1)-B3/24)*24

Du får her svaret i antal arbejdstimer. Hvis du vil se formatet i timer.minutter.sekunder, så kan du undlade at gange med 24 til sidst (så det er i antal arbejdsdage) og så formatere cellen så formatet er [h].mm.ss (dansk [t].mm.ss). På dansk bruger du ANTAL.ARBEJDSDAGE i stedet for NETWORKDAYS og REST i stedet for MOD. Resultatet så nu således ud:

Hvor du her kan se at hvis jeg beregner forskellen mellem de to tidspunkter, svarer dette til 74 timer. Men i arbejdstid mellem 6 og 16 er der kun tale om 12 timer.

Hvis du vil beregne antallet af arbejdstimer mellem to tidspunkter, hvor kun weekenderne er trukket fra, kan du også bruge denne funktion, men blot sætte arbejdstiden fra 0 til 24. Dette er en lidt udvidet version af NETWORKDAYS der giver resultatet i hele dage, hvor denne giver med decimaltal.

Det er vigtigt at bemærke at hvis du har sat en arbejdstid og en person starter opgaven før arbejdstiden begynder eller slutter opgaven efter arbejdstiden slutter, får du ikke et korrekt resultat. Her vil de timer uden for arbejdstiden blive lagt oveni arbejdstiden. Det kan dog måske være en meget god ide, hvis der for eksempel er tale om overarbejde.

Brug samme formel i VBA

Hvis du foretrækker at bruge VBA, så er her samme kode:

Public Function GetWorkHours(Byval B1 As Date, Byval B2 As Date, Byval B3 As Integer, Byval B4 As Integer)

GetWorkHours = ((WorksheetFunction.NetworkDays(B1, B2) - 2) * (B4 - B3) / 24 + B4 / 24 - Rest(B1) + Rest(B2) - B3 / 24) * 24

End Function

Public Function Rest(ByVal a As Double)

Rest = a - Int(a)

End Function

Som du kan se har jeg her lavet min egen REST/MOD funktion, mens NETWORKDAYS også findes i VBA. Det skulle gerne give samme resultat.

Det var lidt om hvordan du beregner arbejdstider i Excel. Der er ofte mange andre udfordringer man også kan tage højde for, men det bliver i en anden artikel.

Del denne artikelShare on Facebook1Tweet about this on TwitterShare on Google+0

Add a Comment

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *