TOP

Arbeitszeit

Beschreibung

In diesem Artikel betrachten wir, wie man die Arbeitszeit zwischen zwei Terminen berechnet. Diese Informationen können sowohl für die Analyse der Effizienz der Arbeit der Mitarbeiter als auch für die Berechnung der Nutzungszeit im Falle eines Akkordlohnsystems benötigt werden.

Schreiben wir also unsere eigene Funktion, die uns beim Zählen der Arbeitsstunden hilft, und nennen wir sie WORKHOURS.

Öffnen Sie das Menü Dienst – Makro – Editor Visual Basic , Setzen Sie das neue Modul ein (Speisekarte Insert - Module) und kopieren Sie den Text dieser Funktion dorthin:

Function WORKHOURS(StartDate As Variant, EndDate As Variant)
    Application.Volatile
    StartDate = StartDate.Address
    EndDate   = EndDate.Address
    
    ' Arbeitszeiten des ersten Tages 
    WORKHOURS1 = Evaluate("IF(AND(DAY(" & StartDate & ")=DAY(" & _
    EndDate & "),MONTH(" & StartDate & ")=MONTH(" & EndDate & "))," & EndDate & _
    "-" & StartDate & "-IF(AND(HOUR(" & StartDate & ")<=13,HOUR(" & EndDate & _
    ")>=14),1/24,0),18/24-MOD(" & StartDate & ",1)-IF(HOUR(" & StartDate & _
    ")<=13,1/24,0))")
    
    ' Arbeitszeiten der Zwischentage 
    WORKHOURS2 = Evaluate("MAX((IF(AND((WEEKDAY(" & EndDate & ",2))"&"<"&"(WEEKDAY(" & StartDate & _
    ",2)),((WEEKDAY(" & StartDate & ",2))-(WEEKDAY(" & EndDate & ",2)))>1),(((DATEDIF(" & StartDate & _
    "," & EndDate & "," & """D""" & ")+1))-(FLOOR((DATEDIF(" & StartDate & "," & EndDate & _
    "," & """D""" & ")+1)/7,1)*2)-2),(((DATEDIF(" & StartDate & "," & EndDate & "," & """D""" & ")+1))-(FLOOR((DATEDIF(" & _
    StartDate & "," & EndDate & "," & """D""" & ")+1)/7,1)*2)))-2),0)*8/24")
    
    ' Arbeitszeit des letzten Tages 
    WORKHOURS3 = Evaluate("IF(AND(DAY(" & StartDate & _
    ")=DAY(" & EndDate & "),MONTH(" & StartDate & ")=MONTH(" & EndDate & ")),0,MOD(" & EndDate & _
    ",1)-9/24-IF(HOUR(" & EndDate & ")>=14,1/24,0))")
    
    WORKHOURS = WORKHOURS1 + WORKHOURS2 + WORKHOURS3
End Function

Schließen Sie den Visual Basic-Editor und kehren Sie zu Excel zurück.

Jetzt in Funktionsmeister in der Kategorie Benutzerdefinierte Sie können unsere Funktion WORKHOURS finden und verwenden. Funktionssyntax Folgendes:

 =WORKHOURS(start_date; end_date)