Maschinenstatistik

Hallo Experten,

ich hab mal wieder ein Problem und hab irgendwie nicht so recht Ahnung davon, wie ich es am besten angehen könnte…
Aber vielleicht hilft es mir ja sogar schon hier darüber zu schreiben…

Und zwar folgendes:

SN Downtime Uptime
abc 01.04.2006 12:11 02.04.2006 12:11
abc 04.04.2006 00:11 05.04.2006 12:11
abc 07.04.2006 12:11 07.04.2006 12:45
abc 15.04.2006 14:11 17.04.2006 12:11
CDE 02.04.2006 10:11 02.04.2006 12:11
CDE 05.04.2006 03:11 05.04.2006 12:11
CDE 09.04.2006 09:11 09.04.2006 12:11
CDE 20.04.2006 12:11 20.04.2006 23:11
fgh 03.04.2006 12:11 03.04.2006 17:41
fgh 10.04.2006 09:11 10.04.2006 12:11

diese Seriennummern (SN) sollen nun teilweise zusammengefasst werden und ein Monat simuliert werden…
Wenn nun zwei Maschinen gleichzeitig ausfallen (eigentlich über x% der Maschinen) soll das separat erfasst werden da dann eine Vertragsstrafe fällig wird.
Das Problem dabei ist, dass in dieser Liste jetzt auch noch SNs auftauchen können, die nicht beachtet werden sollen.
d.h. ich kann nicht mit KKLEINSTE() arbeiten - zumindest nicht so einfach…
Vielleicht geht das mit einer Matrixformel? Ich kenne mich da leider zu wenig aus :frowning:

wie es gemacht wird ist zweitrangig…
also vba ist okay - Formeln wären aber besser…

Hat jemand eine Idee?

Vielen Dank
Munich

Hallo Munich,

mit Formeln geht da meiner Meinung nach wenig, dafür müssen zu viele Rangbedingungen eingehalten werden. Ein Makro, dass die Ausfallzeiten der Maschinen vergleicht ist da übersichtlicher. Außerdem kann man die Datenausgabe da einfacher steuern.

De Einfachheit halber schicke ich Dir eine Datei mit einem Lösungsansatz, in der ich deine Beispieldaten verarbeitet habe.
Hier schon mal der Makrocode:

Sub Maschinen()
 'Ermittlung von Maschinen mit überlappenden Ausfallzeiten
 Dim Daten As Range, wks1 As Worksheet, wks2 As Worksheet, I As Long, J As Long
 Dim A As Integer, E As Integer, Zeile As Long, Ausnahmen As Range, Zelle As Range
 Set wks1 = ThisWorkbook.Sheets("Tab1")
 Set wks2 = ThisWorkbook.Sheets("Tab2")
 With wks1
 'Bereich mit SN der Maschinen in Spalte F, die nicht berücksichtigt werden sollen
 Set Ausnahmen = .Range(.Cells(2, "F"), .Cells(Rows.Count, "F").End(xlUp))
 'Bereich mit den Daten der Maschinen
 Set Daten = .Range(.Cells(2, 1), .Cells(.UsedRange.Row + .UsedRange.Rows.Count - 1, 3))
 End With
 Zeile = 4 'Startzeile in 2. Tabelle
 A = 2 ' Spalte für Beginn Downtime
 E = 3 ' Spalte für Ende Downtime
 'Altdaten in Tab2 löschen
 With wks2
 .Range(.Cells(Zeile, 1), .Cells(.UsedRange.Row + .UsedRange.Rows.Count - 1, 6)).ClearContents
 End With
 ' Maschinen mit überlappenden Downzeiten in Tab2 listen
 For I = 1 To Daten.Rows.Count - 1
 Maschine = False
 'Überprüfen, ob Maschine in Ausnahmeliste
 For Each Zelle In Ausnahmen
 If Zelle.Value = Daten(I, 1) Then GoTo weiter1
 Next Zelle
 For J = I + 1 To Daten.Rows.Count
 'Überprüfen, ob Maschine in Ausnahmeliste
 For Each Zelle In Ausnahmen
 If Zelle.Value = Daten(J, 1) Then GoTo weiter2
 Next Zelle
 If Daten(I, 1) Daten(J, 1) Then 'verschiedene Maschinen
 'Bedingungen für Zeitüberlappung
 If (Daten(J, A) Daten(I, A)) Or \_
 (Daten(J, E) \>= Daten(I, E) And Daten(J, A) = Daten(I, A) And Daten(J, E) 
Der basiscode war einfach, aber bis dann alle Randbedingungen korrekt berücksichtigt sind werden es dann doch schnell ein paar Zeilen.
Gruß
Franz


> <small>[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]</small>

super!
Wenn noch jemand Sterne übrig hat - gebt sie ihm *g*
Die Datei ist super!
Funktioniert schon mal astrein!
Vielen Dank dafür.

Grüsse
Munich

ich gebe gerne
dann will ich aber auch haben …

der Ex-Münchner

1 „Gefällt mir“

dann will ich aber auch haben …

da ist einer, du Scherzkeks!

von mir falsch formuliert ;-(((
hallo Erich,

das war von mir bedauerlicherweise nicht richtig formuliert:
mit haben meinte ich das Excel-File, jedoch nicht den Stern

mfg
Wolfgang

*lach*
ich hatte es aber auch so verstanden :wink:

wenn ich daheim bin kann ichs Dir weiterleiten…