VBA Hilfe

Bild

Betrifft: VBA Hilfe
von: Jürgen
Geschrieben am: 05.08.2015 18:49:19

Hallo ExcelFreunde,
ich möchte gerne alle Zeilen gelöscht haben,
die nicht solche Werte haben wie 1-01-01-10, ( immer mit Bindestriche )
Alle Zahlen wie 1, 35, oder Texte sollen die Zeilen gelöscht und nachgerutscht werden.
Wäre sowas möglich ?
https://www.herber.de/bbs/user/99350.xlsx
Besten Dank und hoffe ihr habt eine Idee
LG.
Jürgen

Bild

Betrifft: AW: VBA Hilfe
von: Daniel
Geschrieben am: 05.08.2015 18:53:17
Hi
Autofilter einrichten, dann im Autofiltermenü:
Textfilter - Enthält nicht: - (Bindestrich eingeben
dann die Zeilen löschen und Autofilter aufheben.
die ausgeblendeten Zeilen werden nicht bearbeitet.
Gruß Daniel

Bild

Betrifft: VBA Hilfe Nachtrag
von: Jürgen
Geschrieben am: 05.08.2015 18:59:23
Hallo Daniel,
ich bräuchte so was leider in VBA, den die Liste wird weiter gearbeitet und darf kein Filter enthalten werden. Leider :-(
Hab gerade gesehen, das 1-01-01-01,01 vorkommt, die müssten auch gelöscht werden, da ein Komma vorhanden ist.
Danke ersteinmal für deinen ersten Tip

Bild

Betrifft: AW: VBA Hilfe Nachtrag
von: Daniel
Geschrieben am: 05.08.2015 19:09:37
Hi
du kannst den Filter auch per Makro ansteuern, der Recorder ist dein Freund.
das Makro kann auch den Filter wieder aufheben.
ne andere Löschmethode ist folgende:
1. trage in einer Hilfsspalte am Tabellenende eine Formel ein, die alle Zellen die gelöscht werden sollen mit 0 kennzeichnet und die die Stehenbleiben sollen mit der aktuellen Zeilennummer
2. schreibe in die erste Zeile der Hilfsspalte ebenfalls die 0
3. wende auf das ganze die Funktion DATEN - DATENTOOLS - DUPLIAKTE ENTFERNEN an, mit der Hilfsspalte als Kriteriumsspalte und der Option "keine Überschrift"
4. lösche die Hilfsspalte wieder.
auch das ist relativ einfach mit Hilfe des Recorders zu programmieren.
sieht als Code so aus:

Sub lösch()
With ActiveSheet.UsedRange
With .Columns(.Columns.Count + 1)
    .FormulaR1C1 = "=if(iserror(find(""-"",RC1)),0,if(iserror(find("","",RC1)),Row(),0))"
    .Cells(1, 1).Value = 0
    .EntireRow.RemoveDuplicates .Column, xlNo
    .ClearContents
End With
End With
End Sub
Gruß Daniel

Bild

Betrifft: AW: VBA Hilfe Nachtrag
von: Jürgen
Geschrieben am: 05.08.2015 19:14:37
Hallo Daniel,
im Test schaut es super aus, ich werde es morgen in meiner Liste Testen die ca. 78000Zeilen hat.
Bin mal gespannt :-)
Gebe dir morgen bescheid.
Danke
LG Jürgen

Bild

Betrifft: AW: VBA Hilfe Nachtrag
von: Daniel
Geschrieben am: 05.08.2015 19:20:59
Bei 78.000 Zeilen ist das die beste Methode.
das RemoveDuplicates ist die einzige Funktion, die in grossen, unsortierten Datenmengen beim Zeilenlöschen schnell ist.
ansonsten müssen grosse Listen vorher sortiert werden, so dass die zu löschenden Zeilen einen lückenlos zusammenhängenden Zellblock bilden.
Gruß Daniel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "als PDF speichern"