Clever-Excel-Forum

Normale Version: Tage berechnen mit mehreren Unterbrechungen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo, 

ich würde gerne eine Durchlaufszeit-Berechnung in Tagen ohne Unterbrechungszeiträume durchführen!

Ich möchte in einer Auftragsliste (je Zeile ein Artikel), eine Tage Berechnung durchführen. 
Dafür soll die Differenz zwischen Eingang- und Ausgangsdatum berechnet werden. Das ist noch einfach. 

Es kann jedoch bis zu 3 Unterbrechungszeiträume geben. Diese Unterbrechungstage sollen von den Gesamttagen abgezogen werden. Auch das konnte ich lösen. 

Das Problem ist allerdings, dass die Unterbrechungszeiträume sich überschneiden können und die sich überschneidenden Tage nicht doppelt abgezogen werden dürfen. 

Kann mir jemand bei diesem Problem helfen? Ich wäre für jede Idee dankbar!

Spalte A --> Eingang
Spalte B --> Ausgang 
Spalte C --> Unterbrechungsbeginn 1 
Spalte D --> Unterbrechungsende 1 
Spalte E --> Unterbrechungsbeginn 2 
Spalte F --> Unterbrechungsende 2 
Spalte G --> Unterbrechungsbeginn 3 
Spalte H --> Unterbrechungsende 3 
Spalte I --> Berechnung der Tage aktiver Arbeit

Gruss Torsden
Hallo Torsden,

ohne Beispieltabelle wird das nix. https://www.clever-excel-forum.de/thread-326.html
Hallo Günter,

natürlich! Hätte ich auch selber drauf kommen können!

Danke!

Gruß Torsden
Hallo Torsten,

Hier mal etwas Theorie wie man die Ausfallzeiten berücksichtigen kann. Voraussetzung bei mir ist, dass die zumindest chronologisch eingetragen werden. Ich hab jetzt aber nicht in Deine Beispieldatei geschaut, ich versuche es meistens erst mal ohne.

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEFGHI
105. Jan12. Jan10. Jan15. Jan15. Jan17. Jan13

ZelleFormel
I1=((C1-B1)+1)-(C1>=D1)*((C1-D1)+1)+((E1-D1)+1)-(E1>=F1)*((E1-F1)+1)+((G1-F1)+1)
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
A2:H2: 30. Jan/15. Feb/31. Jan/04. Feb/02. Feb/06. Feb/09. Feb/12. Feb

I2: =B2-A2+1-SUMME(C2:H2*{-1.1.-1.1.-1.1})-3-MIN(;E2-D2-1)-MIN(;G2-F2-1)

ergibt 6 Tage= 17 - (11+3) -- 3 -- 0

wenn die Daten "zulässig" sind, also 

A<=Rest und B>=Rest 
C<=E<=G
C<=D
E<=F
G<=H
Hallo und erstmal vielen Dank für die beiden Lösungsvorschläge!

Wenn ich alles richtig umgesetzt habe, funktionieren die Berechnungen aber nur, wenn ich alle 3 Arbeitsstops eintrage.

Bei zwei Arbeitsstops geht die Durchlaufzeit in den 4stelligen Bereich! Es kann auch 1, 2 bzw. 3 Arbeitstops geben!

Wie kann ich dieses noch beheben?

Danke im voraus!

Gruss Torsden
Hallöchen,
In meinem Ansatz multipliziere ich mit der Prüfung, ob das Folgedatum kleiner als das vorherige Enddatum ist. Füge eine zusätzliche Prüfung hinzu, ob der Folgeeintrag größer als 0 ist - auch wieder per Multiplikation.
Hi

Für dein Anliegen denke ich macht es durchaus Sinn sich eine Funktion selbst zu schreiben.
Bei der unten stehenden benutzerdefinierten Funktion sollten die Bedingungen wie x < y keine Rolle spielen bzw. Leere Zellen berücksichtigt sein.
Code:
'benutzerdefinierter Funktionen
Public Function Test(rng As Range)
Dim dict As Object
Dim n As Long, j As Long

Set dict = CreateObject("Scripting.Dictionary")
For j = 1 To 3
  If rng.Cells(j * 2 + 1).Value <> "" And rng.Cells(j * 2 + 2).Value <> "" Then
    For n = rng.Cells(j * 2 + 1).Value To rng.Cells(j * 2 + 2).Value
      dict(n) = 1
    Next n
  End If
Next j
Test = (1 + rng.Cells(2).Value - rng.Cells(1).Value) - dict.Count
End Function

Um A2 bis H2 auszuwerten schreibst du in I2    =Test(A2:H2)

Erklärung zum Umgang mit ben.Funk. (Wenn nötig)
https://support.office.com/de-de/article...748ae8231f

Gruß Elex
Hallo Elex,

Deine Funktion klingt für mich erstmal super! Aber ich bekomme, auch durch lange rum "probiererei" nur immer den #Wert angezeigt.

Vielleicht könntest du nochmal drüber schauen? Wäre echt nett!!

Gruss Torsden
Hi

Da du nur #Wert erhältst, gehe ich davon aus das du die Ausführung von Makros noch nicht erlaubt hast.
 
In i8 steht bei dir =Test(C8:H8) und wenn ich Makros erlaube kommt als Ergebnis -10 heraus.
Rechnet also schon mal.

Für das richtige Ergebnis muss dann in i8 =Test(A8:H8) stehen.

Gruß Elex
Seiten: 1 2