n10n50
Goto Top

Aufgrund eines Zeichens, komplette Zeile löschen

Schönen Nachmittag!

Ich hätte eine Frage bezüglich Excel/VBA.

Ich habe eine Excel Datei die aus >8000 Zeilen gesteht.
In manchen Zeilen habe ich jetzt Telefonnummern und/oder E-Mail Adressen stehen...
Diese will ich aber nicht haben. - Ist es der Fall dass in einer Zeile eine Telefonnummer oder E-Mail Adresse vorkommt, steht diese auf alle Fälle in der Zelle A.
D.h. ich würde jetzt gerne all jene Zeilen löschen, in denen in der Zelle A entweder ein +43 oder ein @ vorkommt natürlich werden hier auch Wildcards benötigt.

Hat jemand so ein Codesnippet für mich? - Leider bin ich in VBA nicht so bewandt :S


Lg

Content-Key: 129071

Url: https://administrator.de/contentid/129071

Printed on: April 24, 2024 at 08:04 o'clock

Member: bastla
bastla Nov 10, 2009 at 15:06:05 (UTC)
Goto Top
Hallo n10n50 und willkommen im Forum!
Leider bin ich in VBA nicht so bewandt :S
VBA brauchst Du eigentlich gar nicht - einfach in einer freien Spalte die Formel
=SUCHEN("+43";A1)
eintragen, nach unten kopieren und (unter Nichtbeachtung der Fehlermeldungen face-wink) nach dieser Spalte sortieren - jetzt stehen alle entsprechenden Zeilen in einem Block untereinander und Du kannst sie bequem löschen.

Das Ganze funktioniert natürlich auch mit
=SUCHEN("@";A1)
Sollte es wichtig sein, die ursprüngliche Reihenfolge der Zeilen wieder herstellen zu können, einfach vorweg in die ersten beiden Zellen einer weiteren freien Spalte die Werte 1 und 2 eintragen, beide Zellen markieren und nach unten ausfüllen. Nach dem oben beschriebenen Löschvorgang wieder nach dieser Nummerierungsspalte sortieren ...

Grüße
bastla
Mitglied: 76109
76109 Nov 10, 2009 at 16:16:54 (UTC)
Goto Top
Hallo von n10n50 und Hallo bastla!

Und wenn's doch ein Makro sein soll, dann diesen Quelltext:
Const SheetName = "Tabelle1"  

Sub DeleteLine()
    Dim i As Long, EndLine As Long
    
    Sheets(SheetName).Activate
    
    EndLine = Cells(Rows.Count, "A").End(xlUp).Row  
    
    For i = 1 To EndLine
        If i > EndLine Then Exit For
        If Cells(i, "A") Like "*+49*" Or Cells(i, "A") Like "*@*" Then  
            Rows(i).Delete:  i = i - 1:  EndLine = EndLine - 1
        End If
    Next
End Sub
im VB-Editor in Modul 1 kopieren, den Tabellennamen (SheetName) anpassen und VB-Editor schließen.
In Excel unter <Extras><Makro><Makros><DeleteLine> starten.

Gruß Dieter