Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Nachtarbeit zum laufen bekommen!

Nachtarbeit zum laufen bekommen!
23.10.2023 10:16:24
savo
Hallo ich habe ein Problem mit dem einstellen der Nachtarbeit, folgende Daten habe ich:
A4 ist das Startdatum, B4 ist das Startzeit, C4 ist das Enddatum, D4 ist die Endzeit und E4 ist die Pause die abgerechnet werden muss.

Ich brauche eine Formel die Nachtzeiten richtig berechnet. Folgendes muss passieren. Bei mir gilt Nachtarbeit und die ist normalerweise von 21:01 Uhr bis 6:00 Uhr. Jedoch gibt es zu Sonntagen und Feiertagen spezielle regeln weshalb die nicht mit reinfallen. Nun läuft das so Montag von 4:01 Uhr bis 6:00 Uhr ist Nachtarbeit, Montag 21:01 bis 0:00 ist nachtarbeit, Dienstag 0:00 bis 6:00 ist Nachtarbeit sowie 21:01 bis 0:00, Mittwoch 0:00 Uhr bis 6:00 ist Nachtarbeit, sowie 21:01 bis 0:00, Donnerstag 0:00 bis 6:00 Uhr ist Nachtarbeit, sowie 21:01 bis 0:00 Uhr, Freitag 0:00 bis 6:00 ist Nachtarbeit, sowie 21:01 bis 0:00 und Samstag 0:00 bis 6:00 Uhr ist Nachtarbeit, sowie 21:01 bis 0:00 Uhr. Sonntag gibt es keine nachtarbeit und an feiertagen auch nicht, deshalb sollen die Felder leer bleiben falls die Zeit und/oder das Datum solche bereiche treffen. Alle anderen Zeiten am Tage sind keine Nachtarbeit und sollten auch nicht in das Raster fallen und am besten dann leer bleiben. Falls die Anfangszeit sich in bereich vor den Nachtarbeiten befinden soll erst gezählt werden wann die Nachtarbeit losgeht genauso am Ende wenn die Endzeit länger geht als nachtarbeit soll es nur bis zur endzeit für Nachtarbeit zählen. Z.B. man arbeitet von 18:00 Uhr bis 7:00, dann wird nur die zeit von 21:01 bis 6:00 Uhr als Nachtarbeit gezählt. Feiertage habe ich auf einer extra Tabelle. Wenn Feiertage sind soll Nachtarbeit auch nicht gezählt werden da dort wie sonntags andere regeln gelten und deshalb soll das feld auch leer bleiben. rauskommen sollen halt die Arbeitszeit die Verbracht wurde in den Bedingungen

Ich habe es schon mit verschiedensten Formeln probiert, bekomme am ende entweder ein Wert! fehler oder Name? fehler.

F4: =WEEKDAY(A4) 'Wochentag des Startdatums
G4: =WEEKDAY(C4) 'Wochentag des Enddatums

H4: =IF(OR(F4=1, ISNUMBER(MATCH(A4,Feiertage!$A$1:$A$13,0))), 0,
IF(F4=2, IF(AND(B4="06:00",D4>"04:00"), "06:00"-MAX("04:00",B4), 0) + IF(B4="21:01", "21:01"-B4, 0) + IF(D4>"21:01", D4-"21:01", 0),
IF(F4=7, IF(AND(B4="00:00",D4>"21:01"), "00:00"-MAX("21:01",B4), 0),
IF(AND(B4="21:01",D4>"21:01"), "21:01"-B4 + D4-"21:01", IF(B4="21:01", "21:01"-B4, IF(D4>"21:01", D4-"21:01", 0))))))

Denke das es für nur eine Formel einfach viel zu komplex ist, weshalb ich es auch schon mit hilfstabellen probiert habe, selbes Problem: Nun habe ich es mit VBA probiert und geht es leider auch net. Hier ein beispiel:


Function BerechneNachtarbeit(StartDatum As Date, StartZeit As String, EndDatum As Date, EndZeit As String, Pause As String) As Variant
Dim NachtStunden As Double
Dim aktuellesDatum As Date
Dim NachtStart As Date, NachtEnde As Date, Pausenzeit As Date

'Umwandlung der Zeitstrings in Zeitwerte
StartZeit = TimeValue(StartZeit)
EndZeit = TimeValue(EndZeit)
Pause = TimeValue(Pause)

'Definieren Sie die Nachtarbeitszeiten
NachtStart = TimeValue("21:01")
NachtEnde = TimeValue("06:00")

'Iterieren Sie durch jeden Tag im Datumsbereich
For aktuellesDatum = StartDatum To EndDatum
'Überprüfen Sie, ob das aktuelle Datum ein Sonntag oder Feiertag ist
If Weekday(aktuellesDatum) = 1 Or WorksheetFunction.CountIf(Sheets("Feiertage").Range("$A$1:$A$13"), aktuellesDatum) > 0 Then
'Keine Nachtarbeit an Sonntagen und Feiertagen
Else
'Berechnung der Nachtarbeitsstunden für den aktuellen Tag
If aktuellesDatum = StartDatum Then
'Berechnung für den ersten Tag
If StartZeit = NachtEnde Then
NachtStunden = NachtStunden + WorksheetFunction.Min(NachtEnde, EndZeit) - StartZeit
End If
If StartZeit = NachtStart And EndZeit > NachtStart Then
NachtStunden = NachtStunden + WorksheetFunction.Min(NachtEnde, EndZeit) - NachtStart
End If
ElseIf aktuellesDatum = EndDatum Then
'Berechnung für den letzten Tag
If EndZeit >= NachtStart Then
NachtStunden = NachtStunden + EndZeit - WorksheetFunction.Max(NachtStart, StartZeit)
End If
Else
'Berechnung für Zwischentage
NachtStunden = NachtStunden + NachtEnde - NachtStart
End If
End If
Next aktuellesDatum

'Subtrahieren Sie die Pausenzeit, falls nötig
NachtStunden = NachtStunden - (Pause - Int(Pause))

'Rückgabe der Nachtarbeitsstunden im Format HH:mm
BerechneNachtarbeit = Format(NachtStunden, "hh:mm")
End Function

ich weiß leider net weiter, möglicherweise hat einer von euch ja schon selbiges erlebt und kann mir helfen.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nachtarbeit zum laufen bekommen!
23.10.2023 10:28:01
MCO
So richtig cool wäre ja gewesen, wenn du eine Beispieldatei angehängt hättest, das erspart viel Fragen nach Eingabeformaten etc

So geb ich dir einfach mal 1:1 weiter, was Chat GPT an Verbesserungsvorschlag macht. Nachprüfen tu ich es nicht.
Function BerechneNachtarbeit(StartDatum As Date, StartZeit As Date, EndDatum As Date, EndZeit As Date, Pause As Date) As Variant

Dim NachtStunden As Double
Dim aktuellesDatum As Date
Dim NachtStart As Date, NachtEnde As Date, Pausenzeit As Date

' Definiere die Nachtarbeitszeiten
NachtStart = TimeValue("21:01:00")
NachtEnde = TimeValue("06:00:00")

' Iteriere durch jeden Tag im Datumsbereich
For aktuellesDatum = StartDatum To EndDatum
' Überprüfe, ob das aktuelle Datum ein Sonntag oder Feiertag ist
If Weekday(aktuellesDatum) = 1 Or WorksheetFunction.CountIf(Sheets("Feiertage").Range("$A$1:$A$13"), aktuellesDatum) > 0 Then
' Keine Nachtarbeit an Sonntagen und Feiertagen
Else
' Berechne die Nachtarbeitsstunden für den aktuellen Tag
Dim TagNachtStart As Date
Dim TagNachtEnde As Date

TagNachtStart = IIf(aktuellesDatum = StartDatum, Max(NachtStart, StartZeit), NachtStart)
TagNachtEnde = IIf(aktuellesDatum = EndDatum, Min(NachtEnde, EndZeit), NachtEnde)

NachtStunden = NachtStunden + IIf(TagNachtEnde > TagNachtStart, TagNachtEnde - TagNachtStart, 0)
End If
Next aktuellesDatum

' Subtrahiere die Pausenzeit, falls nötig
NachtStunden = NachtStunden - Pause * 24 ' Multipliziere mit 24, um Stunden zu erhalten

' Rückgabe der Nachtarbeitsstunden im Format HH:mm
BerechneNachtarbeit = Format(NachtStunden, "hh:mm")
End Function

Gruß, MCO
Anzeige
AW: Nachtarbeit zum laufen bekommen!
23.10.2023 10:43:57
savo
Hallo MCO,

soweit ich weiß habe ich alle Eingabearten genannt. jedenfalls habe ich dein Beispiel genommen und es etwas ausprobiert, funktioniert leider immernoch nicht. Die Antwort von ChatGPT hat die Funktion/Sub nicht definiert.

MfG

savo
AW: Nachtarbeit zum laufen bekommen!
23.10.2023 10:56:15
Oberschlumpf
hi,

und wieso zeigst du per Upload nicht mal ne Bsp-Datei mit Bsp-Daten und Code?

Ciao
Thorsten
AW: Nachtarbeit zum laufen bekommen!
23.10.2023 12:28:36
Alwin Weisangler
Hallo,

das kann man mit Formeln machen.
Du muss folgende Dinge beachten:

Beginn der Nachtarbeit vor 00:00 Uhr meist 22:00 Uhr
Berechnung von beispielhaft 22:00 - 00:00 Uhr + Berechnung 00:00 - 06:00 Uhr als Formelkonstrukt
Zeitraum der Nachtschichtzulage meist 23:00 Uhr bis 06:00 Uhr
Berechnung der Nachtarbeitszulage beispielhaft 23:00 - 00:00 Uhr + Berechnung 00:00 - 06:00 Uhr als Formelkonstrukt
Zu alledem kommt noch die Berechnung der Pausenzeit die in eins oder beide Konstrukte eingreift.
Du merkst schon es ist komplex.
Wenn dann noch ein Bundesland (bundeslandabhängige Vorauswahl) mit der Berechnung von Feiertagsarbeit dazu kommt wird richtig spannend.
Des Weiteren passiert es bei Nachtarbeit, dass eine Sonntagszulage mit berechnet werden muss.
Da sollten zumindest die relevanten Zeiten getrennt ausberechnet und ausgegeben werden.
Aber lösbar ist es.
Bei Google kannst du Sonn-, Feiertags- und Nachtzuschläge nachschlagen.
Im Anhang hänge ich mal was dran, welches ich aus Neugier mal zu Ende gebaut hatte.
Da kannst du zumindest dir die Formeln und rausnehmen und deinen Vorstellungen anpassen.
Für die Datei natürlich keine Gewähr, da diese unausgetestet ist.
https://www.herber.de/bbs/user/163653.xlsx

Gruß Uwe



Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige