VBA Zeilen zwischen best. Werten löschen

Bild

Betrifft: VBA Zeilen zwischen best. Werten löschen
von: Christian
Geschrieben am: 02.06.2015 10:52:08

Hallo zusammen,
ich möchte mir gerne das Auswerten einer Liste einfacher machen.
Verschiedene "Vorformatierungen" habe ich bereits gebastelt und die funktionieren bisher auch. Allerdings komme ich bei folgendem Problem nicht weiter. Ich hoffe ihr könnt mir helfen.
In Spalte D stehen Ausfallzeiten in Spalte E der dazugehörige Ausfallschlüssel.
Mich interessieren aber nur die Ausfallschlüssel mit der Nummer 211 und 214 die werden entweder direkt von einer "131" gefolgt oder zwischen der 211/214 und der 131 stehen noch andere Ausfallschlüssel. Ich versuche zum besseren Verständnis mal ein BSP mit hochzuladen. https://www.herber.de/bbs/user/97983.xls
Ich möchte alle Zeilen, von oben nach unten, zwischen der 131 und der 211/214 löschen ohne das diese mit gelöscht werden. Die Liste kann dabei beliebig lang sein und das Makro sollte sich selbst das Ende suchen um nicht ewig zu laufen. Bitte helft mir ich sitze jedes mal einen Vormittag und sortiere und lösche von Hand.
Vielen Dank im Voraus!
CS

Bild

Betrifft: AW: VBA Zeilen zwischen best. Werten löschen
von: Daniel
Geschrieben am: 02.06.2015 12:08:14
Hi
probier mal das:

Sub Löschen()
With ActiveSheet.Cells(3, 1).CurrentRegion
    With .Columns(.Columns.Count + 1)
        .FormulaR1C1 = "=IF(ISERROR(MATCH(RC2,{131,211,214},0)),0,ROW())"
        .Formula = .Value
        .Cells(1, 1).Value = 0
        .EntireRow.RemoveDuplicates .Column, xlNo
        .ClearContents
    End With
End With
End Sub

läuft aber nicht mit Excel 2003 und früher.
Gruß Daniel

Bild

Betrifft: AW: VBA Zeilen zwischen best. Werten löschen
von: Christian
Geschrieben am: 02.06.2015 12:24:27
Hi Daniel,
erst mal danke für die schnelle Antwort.
Habe es jetzt in meine Tabelle kopiert und ausgeführt, leider löscht es alles, nur die erste Zeile bleibt bestehen.

Bild

Betrifft: AW: VBA Zeilen zwischen best. Werten löschen
von: Christian
Geschrieben am: 02.06.2015 12:24:35
Hi Daniel,
erst mal danke für die schnelle Antwort.
Habe es jetzt in meine Tabelle kopiert und ausgeführt, leider löscht es alles, nur die erste Zeile bleibt bestehen.

Bild

Betrifft: AW: VBA Zeilen zwischen best. Werten löschen
von: Daniel
Geschrieben am: 02.06.2015 12:45:35
Hi
mit welcher Tabelle hast du das ausprobiert?
mit der die du hier hochgeladen hast oder mit einer anderen?
ich habe den Code natürlich für die Datei geschrieben, die du uns hier gezeigt hast und damit funktioniert er auch.
Wenn du den Code auf eine andere Datei anwendest die anders aussieht, musst du ihn natürlich noch anpassen, beispielsweise dann, wenn die Vergleichswerte nicht in Spalte B sondern in einer anderen Spalte stehen, oder wenn noch weitere Überschriftenzeilen hinzukommen usw.
Dabei kann ich dir aber nicht helfen, weil ich deine Echtdatei nicht kenne, sondern nur das, was du uns hier zeigst.
aber das funktionsprinzip des Makros ist relativ einfach:
1. wird in eine Spalte am Tabellenende eine Formel geschrieben, welche alle Zeilen, die gelöscht werden sollen mit 0 kennzeichnet und die die stehenbleiben müssen, mit der aktuellen Zeilennummer.
2. dann wende ich die Funktion DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN an, um die Zeilen mit 0 zu löschen.
das kannst du ja erstmal von Hand ausprobieren, vielleicht kannst du dann ja das Makro selber an deine Datei anpassen.
Gruß Daniel

Bild

Betrifft: AW: VBA Zeilen zwischen best. Werten löschen
von: Christian
Geschrieben am: 02.06.2015 14:32:39
Hi,
geht natürlich in der Tabelle die ich geschickt habe. Ich habe die Spalten der BSP Excel aus einer anderen rauskopiert und dort sind die tatsächlich an einer anderen Stelle, sorry mein Fehler.
In dem Original stehen die Ausfallschlüssel in Spalte E.
Wenn ich das Makro richtig verstehe löscht es alles was nicht 131,211 oder 214 heißt. Es gibt aber Situationen in der Liste wo zwischen 211/214 und 131 Werte stehen die ich noch brauche, deswegen war meine Idee nur Werte zwischen 131 und 211/214 zu löschen. habe nochmal ein Bsp. angehangen. https://www.herber.de/bbs/user/97988.xls

Bild

Betrifft: AW: VBA Zeilen zwischen best. Werten löschen
von: Daniel
Geschrieben am: 02.06.2015 15:31:59
Hi
ja so hatte dich verstanden, bzw die Formel so aufgebaut dass alle Zeilen stehen bleiben, die du rosa und gelb markiert hattest und die weissen gelöscht werden.
wenns so sein soll, dass alles zwischen 211/214 und 131 ebenfalls stehen bleiben soll, dann musst du die Formel so abändern (ich beziehe mich wieder auf die hochgeladene Datei):

.FormulaR1C1 = "=IF(OR(RC2=211,RC2=214),ROW(),IF(R[-1]C2=131,0,IF(R[-1]C=0,0,ROW())))"

der Rest des makros kann so stehen bleiben.
Das ist ja das schöne an dieser Mehthode zum Löschen der Daten.
du kennzeichnest die Zellen erst mit einer Formel, dh du kannst diese Formel auch von Hand direkt in die Zelle eingeben und ausprobieren, ob sie das richtige Ergebnis liefert und erst dann wenn alles passt, ins Makro übernehmen.
Gruß Daniel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Zeilen zwischen best. Werten löschen"