Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Laufzeit ohne Wochenende berechnen

Laufzeit ohne Wochenende berechnen
14.10.2019 14:37:03
Andreas
Hallo,
ich habe ein Problem. Ich habe eine Datumsangabe mit Uhrzeit, und möchte das Enddatum und die Enduhrzeit ohne Wochenende und Feiertage berechnen. Mit der Funktion Arbeitstag habe ich es schon probiert, aber die Uhrzeit wird nicht berücksichtigt. Die Lösung kann gerne auch in VBA sein, Hauptsache das Ergebnis stimmt.
Hier das Muster, wie es aussehen soll:
Startzeit Laufzeit Zielzeit
11.10.2019 20:00 36:00:00 15.10.2019 08:00
Schon jetzt Vielen Dank an alle für eine mögliche Lösung.
Anzeige

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: geht schon mit NETTOARBEITSTAGE.INTL() und ...
14.10.2019 15:05:15
neopa
Hallo Andreas,
... ergänzend Rundungsfunktionen und Addition der Stundenanteil vom Start- und Endtag.
Nachfolgend müssen lediglich noch die freie Tage als 4. Argument der Funktion NETTOARBEITSTAGE.INTL() von Dir übergeben werden.
Arbeitsblatt mit dem Namen 'Tabelle2'
 ABC
1Fr 11.10.2019 20:0036:00Di 15.10.2019 08:00

ZelleFormatWert
A1TTT TT.MM.JJJJ hh:mm11.10.2019 20:00:00
B1[h]:mm1,5
C1TTT TT.MM.JJJJ hh:mm15.10.2019 08:00:00

ZelleFormel
B1=NETTOARBEITSTAGE.INTL(AUFRUNDEN(A1;0);KÜRZEN(C1;0)-1%%%;1)+1-REST(A1;1)+REST(C1;1)
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Gruß Werner
.. , - ...
Anzeige
AW: geht schon mit NETTOARBEITSTAGE.INTL() und ...
14.10.2019 15:58:04
Andreas
Hallo Werner,
Vielen Dank für Deine schnelle Antwort. Ich will aber die Zelle C1 berechnen. A1 und B1 sind vorgegeben. Ist das auch möglich?
Schon jetzt Vielen Dank für Deine Unterstützung.
jetzt mal ohne Feiertage
14.10.2019 16:28:35
WF
Hi,
=A1+B1+MAX((WOCHENTAG(A1+B1)={1;7})*2)
WF
AW: jetzt mal ohne Feiertage
14.10.2019 16:36:51
Andreas
OKAY,
aber wenn das Datum in Zelle A1 ein Samstag ist, funktioniert es nicht. Und wie können die Feiertage berücksichtigt werden?
Gruß Andreas
Anzeige
Du willst ohne WE. Warum dann Beginn Sa?
14.10.2019 18:25:57
lupo1
AW: wieso Sa? Sein Startdatum ist ein Fr owT
14.10.2019 20:19:08
neopa
Gruß Werner
.. , - ...
Habs nicht so wie Du getestet/angeschaut. Aber:
14.10.2019 22:03:36
lupo1
So einfach, wie WF's Formel ist, muss man sie (wenn sie denn entsprechend korrigiert ist) von sich aus einen Beginn zu unzulässiger Zeit (WE) schon selbst ausschließen, wenn WE nicht mitgezählt werden soll.
Ist doch irgendwie einleuchtend, oder?
Und bitte nicht solche Dinge in der Formel erledigen, sondern per DÜ.
Anzeige
AW: Habs nicht so wie Du getestet/angeschaut. Aber:
15.10.2019 06:58:05
Andreas
Hallo,
was ist DÜ?
Gruß Andreas
AW: Du willst ohne WE. Warum dann Beginn Sa?
15.10.2019 06:57:04
Andreas
Hallo Lupo1,
es kann vorkommen, das man als Stratdatum einen Samstag hat, daher müßte dies erkannt werden, und entsprechend übersprungen werden.
Das schrieb ich an neopa dazu:
15.10.2019 09:11:16
lupo1
Ist das Startdatum ein unzulässiger Tag, ist das nicht das Problem der Formel. Somit nimmst Du entweder rechnerisch oder manuell den folgenden zutreffenden (Werk)tag (zu Arbeitszeitbeginn).
Davon ist vermutlich auch WF ausgegangen. Wesensfremde Dinge gehören nicht in eine Formel, sondern in die DatenÜberprüfung. Oder in eine Hilfszelle. Deren Formelinhalt kann man dann auch in die eigentliche Formel überführen, aber man sollte den Teil als formelfremd kennzeichnen (Umbrüche) oder erinnern.
Anzeige
AW: Das schrieb ich an neopa dazu:
15.10.2019 09:29:17
Andreas
Hallo Lupo1,
jetzt bin ich total verwirrt. Wie kann ich das umsetzten?
Schon jetzt Vielen Dank für Deine Hilfe!
Gruß Andreas
Es ist müßig, da die FT nicht erledigt wären.
15.10.2019 09:55:07
lupo1
WF's Formel (ohne FT) hatte akademischen Diskussions-Charakter.
C1: Startarbeitszeit (Excel-Zeit)
D1: Endarbeitszeit (Excel-Zeit) (darf nicht kleiner sein, also nur tagsüber)
irgendwo: Feiertage (als Datümer, Bereich als "Feiertage" benennen!)
A2: Start (Excel-DatumZeit)
B2: Stunden (Industriezahl, also Excelzeit * 24. Begründung: Minuszahl möglich!)
C2: =ARBEITSTAG(A2;KÜRZEN((
REST(REST(A2;1)-$C$1;$D$1-$C$1)+B2/24)/($D$1-$C$1));Feiertage)+REST((
REST(REST(A2;1)-$C$1;$D$1-$C$1)+B2/24)/($D$1-$C$1);1)*($D$1-$C$1)+$C$1-(-B2/24&gtREST(A2;1)-$C$1)*(B2&lt0)
als Ende (Excel-DatumZeit)
Geht es nur voran, kannst Du aus allen B2/24 einfach B2 in der Formel machen (und B2 entspr. formatieren).
Denkbar ist natürlich auch die Verwendung von ARBEITSTAG.INTL.
Anzeige
Nachtrag: Rückwärts geht doch nicht ...
15.10.2019 09:59:16
lupo1
... die Feiertage werden dann nicht berücksichtigt (Bug? Oder meine Formel falsch?).
Vielleicht ist das ja bei ARBEITSTAG.INTL behoben. Habe ich jetzt nicht überprüft.
auch mit Beginn am WE (ohne Feiert.)
15.10.2019 13:26:40
WF
Hi,
ist ja nun überflüssig - er hat jetzt eine (elend lange) VBA-Lösung.
=WENN(WOCHENTAG(A1;2)>5;GANZZAHL(A1)-WOCHENTAG(A1;2)+8+B1;A1+B1+(WOCHENTAG(A1+B1;2)>5)*2)
WF
Anzeige
AW: ist aber inkorrekt, gib mal z.B 66:00 vor owT
15.10.2019 16:54:08
neopa
Gruß Werner
.. , - ...
Gib '66:00 vor (mit Hochkomma)
15.10.2019 20:58:30
WF
.
nee, hast Recht
15.10.2019 23:51:31
WF
wenn die Stundenzahl über 2 Tagen ist, gibt's Murks.
Anzeige
AW: nee, hast Recht
16.10.2019 07:55:52
Andreas
Nochmal herzlichen Dank an alle, die mir mit Ihren Beiträgen geholfen haben. Habe das Projekt nun fertig und es funktioniert super.
AW: nun noch der Vollständigkeit halber ...
16.10.2019 10:21:56
neopa
Hallo @all,
... hab ich meine Formel bzgl. dessen, dass eine Startzeit auch an einem Wochenende oder einem Feiertag beginnen kann, dem Ergebnis der Makrolösung angepasst, da Du diese offensichtlich als so für Dich korrekt empfindest und keine weitere Aussage auf meine diesbzgl. Frage gemacht hast. Meine gestern eingestellte Formel musste ich dazu nur wenig erweitern.
In nachfolgend beigefügter Datei https://www.herber.de/bbs/user/132551.xlsm hab ich meine Formellösung und die von Sigi aufgestellte UDF-Lösung aufgezeigt. Meine Tabelle für die Feiertage und sonstigen freien Tage kann ausgeblendet werden oder in ein ein anders Tabellenblatt verschoben werden. Dadurch dass diese als "intelligente" Tabelle aufgestellt ist, kann sie einfach ergänzt/geändert/angepasst werden.
Gruß Werner
.. , - ...
Anzeige
AW: Laufzeit ohne Wochenende berechnen
15.10.2019 10:11:09
Sigi
Hallo Andreas,
mit VBA lassen sich deine Probleme lösen. Starttermin kann Wochenende, Feiertag oder Arbeitstag sein. Völlig egal. Bei den Feiertagen musst du halt die Tage für deine Region aktivieren.
Startdatum mit Uhrzeit (im Format TT.MM.JJJJ hh:mm) dann VBA-Funktion (mit Unterfunktion, freie Tage):
Function LaufzeitEnde(Start As Date, Dauer As Date) As Date
Dim Dat As Date, Skn As Double, RD As Double
Dim SkV As Double, SkB As Double, TD As Double
Const ZF As Long = 1440
Application.Volatile
SkV = 0
SkB = Round(CDbl(1 * ZF), 0)
TD = SkB - SkV
Dat = CDate(Int(CDbl(Start)))
Skn = Round(CDbl(Start - Dat) * ZF, 0)
RD = Round(CDbl(Dauer) * ZF, 0)
If RD > 0 And Skn Skn = SkV
ElseIf RD > 0 And Skn > SkB Then
Dat = Dat + 1
Skn = SkV
End If
Do While RD > 0
If Not IstFrei(Dat) Then
Do While RD > 0 And Skn = SkV
Skn = Skn + 1
RD = RD - 1
Loop
If RD > 0 And RD > TD Then
Do While RD > TD
Dat = Dat + 1
If Not IstFrei(Dat) Then
RD = RD - TD
End If
Loop
End If
If RD > 0 Then
Dat = Dat + 1
Skn = SkV
End If
Else
Dat = Dat + 1
Skn = SkV
End If
Loop
LaufzeitEnde = Dat + Skn / ZF
End Function
Private Function IstFrei(Dat As Date) As Boolean
Dim FreierTag As Range
Dim frei As Boolean
Dim JJ As Long
Dim DD As Long
Dim OS As Date
If Weekday(Dat, vbMonday) > 5 Then frei = True: GoTo RAUS       'WoE.
JJ = Year(Dat)
If Dat = DateSerial(JJ, 1, 1) Then frei = True: GoTo RAUS       'Neuj.
'If Dat = DateSerial(JJ, 1, 2) Then frei = True: GoTo RAUS       'Ber.
If Dat = DateSerial(JJ, 1, 6) Then frei = True: GoTo RAUS       '3K?.
'If Dat = DateSerial(JJ, 3, 8) Then frei = True: GoTo RAUS       'int.Fr.t.
If Dat = DateSerial(JJ, 5, 1) Then frei = True: GoTo RAUS       'Maif.
'If Dat = DateSerial(JJ, 8, 1) Then frei = True: GoTo RAUS       'Bun.f.
'If Dat = DateSerial(JJ, 8, 8) Then frei = True: GoTo RAUS       'Fri.f.
If Dat = DateSerial(JJ, 8, 15) Then frei = True: GoTo RAUS      'Mar.H.
'If Dat = DateSerial(JJ, 9, 20) Then frei = True: GoTo RAUS      'W.K.t.
If Dat = DateSerial(JJ, 10, 3) Then frei = True: GoTo RAUS      'dt.Einh.
'If Dat = DateSerial(JJ, 10, 31) Then frei = True: GoTo RAUS     'Ref.
If Dat = DateSerial(JJ, 11, 1) Then frei = True: GoTo RAUS      'Allh.
'If Dat = DateSerial(JJ, 11, 23) - _
Weekday(DateSerial(JJ, 12, 24)) _
Then frei = True: GoTo RAUS          'BuB
'If Dat = DateSerial(JJ, 11, 26) Then frei = True: GoTo RAUS     'Nat.f.
'If Dat = DateSerial(JJ, 12, 8) Then frei = True: GoTo RAUS      'Mar.Emp.
If Dat = DateSerial(JJ, 12, 24) Then frei = True: GoTo RAUS     'hl.Abd.
If Dat = DateSerial(JJ, 12, 25) Then frei = True: GoTo RAUS     'Whn1
If Dat = DateSerial(JJ, 12, 26) Then frei = True: GoTo RAUS     'Whn2
If Dat = DateSerial(JJ, 12, 31) Then frei = True: GoTo RAUS     'Silv.
DD = (((255 - 11 * (JJ Mod 19)) - 21) Mod 30) + 21
OS = DateSerial(JJ, 3, 1) + DD + (DD > 48) + 6 - ((JJ + JJ \ 4 + DD + (DD > 48) + 1) Mod 7)
If Dat = OS - 2 Then frei = True: GoTo RAUS         'KarFr.
If Dat = OS + 1 Then frei = True: GoTo RAUS         'OstMo.
If Dat = OS + 39 Then frei = True: GoTo RAUS        'ChrH.
If Dat = OS + 50 Then frei = True: GoTo RAUS        'PfiMo.
If Dat = OS + 60 Then frei = True: GoTo RAUS        'Fronl.
RAUS:
IstFrei = frei
End Function

Grüße
Sigi
Anzeige
AW: Laufzeit ohne Wochenende berechnen
15.10.2019 11:34:08
Andreas
Hallo Sigi,
das funktioniert absolut top. VIELEN VIELEN DANK!!!
AW: Endzeitermittl. mit Berücks. von Feiertagen...
15.10.2019 16:47:58
Feiertagen...
Hallo,
... als reine Formellösung (ab Excelversion 2010; lässt sich aber auch für frühere Versionen umschreiben)
Formellösung bewusst ohne Berücksichtigung von Startzeiten an Feiertagen und Wochenende, weil da für mich nicht geklärt ist, ob und wie dann diese Zeiten berücksichtigt werden sollen. Nachfolgende Formel ließe sich dann aber dafür noch anpassen, wenn geklärt.
Für die Stundenzahl in Spalte B bin ich von max 1000 ausgegangen (darüber kommt dann die Fehlermeldung #ZAHL!) Formel C1 kann nach unten kopiert werden.
Die Feiertagsliste ist "Als Tabelle formatiert" und im Namensmanager anschließend umbenannt zu _Tab_Frei. Dadurch kann diese beliebig auch nach unten erweitert werden und wird korrekt durch Formel automatisch berücksichtigt, so z.B. die freien und Feiertage auch des Folgejahres.
Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDEF
1Fr 11.10.2019 20:0036:00Di 15.10.2019 08:00  FT_und frei
2Fr 11.10.2019 06:0020:00Mo 14.10.2019 02:00  Di. 01.01.2019
3Fr 11.10.2019 06:0015:00Fr 11.10.2019 21:00   
4Fr 11.10.2019 20:0066:00Mi 16.10.2019 14:00   
5Fr 11.10.2019 12:00130:00Fr 18.10.2019 22:00   
6Fr 11.10.2019 06:00140:00Mo 21.10.2019 02:00   
7Mo 23.12.2019 06:0060:00Mo 30.12.2019 18:00  Do. 31.10.2019
8Mo 23.12.2019 06:0070:00Do 02.01.2020 04:00  Di. 24.12.2019
9     Mi. 25.12.2019
10     Do. 26.12.2019
11     Di. 31.12.2019
12     Mi. 01.01.2020
13     Mo. 06.01.2020
14      

ZelleFormel
C1=AGGREGAT(15;6;AGGREGAT(15;6;ZEILE(INDEX(A:A;A1):INDEX(A:A;A1+9+B1*3))/(ZÄHLENWENN(_Tab_Frei[FT_und frei];ZEILE(INDEX(A:A;A1):INDEX(A:A;A1+9+B1*3)))=0)/(REST(ZEILE(INDEX(A:A;A1):INDEX(A:A;A1+9+B1*3));7)&gt1);ZEILE(A$1:A$42));1+KÜRZEN(B1+REST(A1;1);0))+REST(B1+A1;1)
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Gruß Werner
.. , - ...
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Laufzeit ohne Wochenende berechnen


Schritt-für-Schritt-Anleitung

Um die Laufzeit in Excel ohne Wochenende und Feiertage zu berechnen, kannst Du die Funktion ARBEITSTAG oder ARBEITSTAG.INTL verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Daten eingeben: Gib das Startdatum (z.B. 11.10.2019 20:00) in Zelle A1 und die Laufzeit in Stunden (z.B. 36:00) in Zelle B1 ein.

  2. Formel erstellen: In Zelle C1 (Zielzeit) verwendest Du die folgende Formel:

    =ARBEITSTAG(A1;B1/24)

    Diese Formel berechnet das Enddatum ohne Wochenenden.

  3. Uhrzeit hinzufügen: Um die Uhrzeit zu berücksichtigen, musst Du die Stunden addieren:

    =ARBEITSTAG(A1;KÜRZEN(B1/24)) + REST(B1;1)
  4. Feiertage berücksichtigen: Du kannst Feiertage in einer separaten Liste (z.B. Frei) erfassen und sie in die Formel einfügen:

    =ARBEITSTAG(A1;KÜRZEN(B1/24);Frei)
  5. Formatierung: Stelle sicher, dass die Zelle C1 im gewünschten Datums- und Zeitformat formatiert ist.


Häufige Fehler und Lösungen

  • Fehler: Uhrzeit nicht berücksichtigt
    Wenn die Uhrzeit nicht korrekt angezeigt wird, überprüfe die Verwendung von REST in der Formel. Achte darauf, dass die Laufzeit als Dezimalzahl eingegeben wird.

  • Fehler: Feiertage werden nicht erkannt
    Stelle sicher, dass die Feiertagsliste korrekt erstellt und benannt ist. Die Formel muss Zugriff auf den Bereich haben, in dem die Feiertage gespeichert sind.

  • Fehler: Startdatum fällt auf ein Wochenende
    Wenn das Startdatum auf einen Samstag oder Sonntag fällt, kannst Du die Formel anpassen, um den nächsten Arbeitstag zu berücksichtigen:

    =WENN(WOCHENTAG(A1;2)>5;ARBEITSTAG(A1;1);A1)

Alternative Methoden

Neben den Standardfunktionen kannst Du auch VBA verwenden, um Laufzeiten ohne Wochenenden zu berechnen. Hier ist ein Beispiel einer VBA-Funktion:

Function LaufzeitEnde(Start As Date, Dauer As Double) As Date
    ' Deine VBA-Logik hier
End Function

Diese Funktion kann komplexere Berechnungen durchführen und bietet mehr Flexibilität, indem sie Feiertage und Wochenenden automatisch ausschließt.


Praktische Beispiele

  1. Beispiel mit Feiertagen:

    • Startdatum: 11.10.2019 20:00
    • Laufzeit: 36:00
    • Feiertage: 01.01.2019, 25.12.2019
    • Formel in C1:
      =ARBEITSTAG(A1;KÜRZEN(B1/24);Frei)
  2. Rückwärts rechnen: Wenn Du das Enddatum rückwärts berechnen möchtest, kannst Du ARBEITSTAG zusammen mit -B1/24 verwenden:

    =ARBEITSTAG(A1; -KÜRZEN(B1/24); Frei)

Tipps für Profis

  • Namen vergeben: Benenne Deine Bereiche für Feiertage, um die Lesbarkeit der Formeln zu erhöhen.
  • VBA für komplexe Szenarien: Nutze VBA, wenn Du regelmäßig komplexe Berechnungen durchführen musst. Damit hast Du volle Kontrolle über die Logik.
  • Formatierung: Achte darauf, dass die Zellen korrekt formatiert sind, damit Excel die Daten als Datum und Uhrzeit erkennt.

FAQ: Häufige Fragen

1. Wie kann ich die Laufzeit in Stunden angeben?
Verwende das Format [h]:mm für die Laufzeit, um mehr als 24 Stunden korrekt darzustellen.

2. Wie kann ich Feiertage in die Berechnung einbeziehen?
Erstelle eine Liste von Feiertagen in einer separaten Tabelle und verwende diese in der ARBEITSTAG-Formel als drittes Argument.

3. Kann ich diese Berechnung rückwärts durchführen?
Ja, Du kannst die ARBEITSTAG-Funktion mit einem negativen Wert verwenden, um die Berechnung rückwärts durchzuführen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige