Macro zur Filterung nach Abhängigkeiten
17.08.2015 09:11:58
Max
ich habe ein extrem kniffliges Excel Problem und in der Vergangenheit fand ich hier immer Rat. Leider komme ich auf keinen grünen Zweig was mein jetziges Problem angeht.
Gehen wir es an.
Ich habe ein Excel Dokument mit 3 Spalten: A - Uhrzeiten; B - unwichtige Werte; C - extrem wichtige Angaben, die x-fach wiederholt vorkommen
Damit gleich ein guter Eindruck entsteht, so sehen Spalte A und C aus:
00:07 Maschine1
00:08 Maschine1
00:50 Maschine2
01:02 Maschine1
05:14 Maschine3
05:15 Maschine3
06:09 Maschine4
06:11 Maschine4
06:23 Maschine5
06:35 Maschine6
06:38 Maschine6
06:40 Maschine1
07:15 Maschine7
07:16 Maschine7
07:20 Maschine1
07:21 Maschine5
07:22 Maschine5
07:24 Maschine5
07:26 Maschine5
07:26 Maschine5
07:27 Maschine5
07:27 Maschine5
Das Problem ist nun dieses, ich benötige von jeder Maschine nur eine Meldung innerhalb von 5 Minuten (das ist in der Regel, die initial Meldung, alles andere ist eine fortlaufende Session).
Nach den Zahlen oben hier noch einmal, aber nur die FETT geschriebenen Werte dürfen bleiben, alles andere soll gelöscht werden.
00:07 Maschine1
00:08 Maschine1
00:50 Maschine2
01:02 Maschine1
05:14 Maschine3
05:15 Maschine3
06:09 Maschine4
06:11 Maschine4
06:23 Maschine5
06:35 Maschine6
06:38 Maschine6
06:40 Maschine1
07:15 Maschine7
07:16 Maschine7
07:20 Maschine1
07:21 Maschine5
07:22 Maschine5
07:24 Maschine5
07:26 Maschine5
07:26 Maschine5
07:27 Maschine5
07:27 Maschine5
An dem Ausdruck "Maschine NR" nicht all zu sehr orientieren, dass ist eine extrem verkürzte Form vom original Ausdruck. Dieser ist bis zu 150 Zeichen lang, aber immer identisch für jede einzelne Maschine. Der Harken an der Sache ist, das die Maschinen nicht immer gleich sind. Es können jeder Zeit neue hinzukommen, die noch nie zuvor erfasst wurden, somit müsste das Macro den Ausdruck auf Ähnlichkeit untersuchen und daran bewerten und nicht anhand von einer vorhanden Liste mit allen möglichen Ausdrücken.
Mein Macro bis jetzt sieht so aus:
Sub loeschen()
Dim r As Integer
For r = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If Range("A" & r).Value - Range("A" & r - 1).Value Range("C" & r).Value Then Rows(r).Delete
Next r
End Sub
Eigentlich ist es nun so:
WENN der Unterschied zwischen A1 und A2 Natürlich funktioniert es nicht, sobald die Verkettung "And" beginnt. Ohne das And läuft es, aber es löscht alle Zeiten die Vielen Dank für die Hilfe!
Max