Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilen mit Bedingung löschen

Zeilen mit Bedingung löschen
19.10.2018 19:42:18
hewi
Liebe Experten,
ich habe diesem Forum schon viele gute Tipps entnommen, aber jetzt komme ich nicht weiter.
Unsere Telefonanlage erzeugt einen täglichen Report als CSV-Datei, die ich per Makro in Excel einlese (alle Felder als Text). Ich möchte nun alle Datensätze mit ungültigen (virtuellen) Rufnummern in Spalte D löschen. Das versuche ich mit:
Sub ungültige_DN_löschen()
Dim lastrow As Long, i As Long, DN As String
Sheets("Daten").Select
lastrow = Cells(Rows.Count, 4).End(xlUp).Row     'ermittelt die letzte Datenzeile in Spalte D
For i = lastrow To 2 Step -1
DN = Cells(i, 4).Value
Select Case DN
Case Left(DN, 2) = "99"
Rows(i).Delete Shift:=xlUp          'löscht DN, die mit 99 beginnen
Case DN >= "a"
Rows(i).Delete Shift:=xlUp          'löscht DN, die mit Buchstaben beginnen
Case DN = "*#*"
Rows(i).Delete Shift:=xlUp          'löscht DN, die # enthalten
Case DN = "*[*"
Rows(i).Delete Shift:=xlUp          'löscht DN, die [ enthalten
Case DN = "*x*"
Rows(i).Delete Shift:=xlUp          'löscht DN, die x enthalten
End Select
Next i
End Sub

Dieses Makro läuft ohne Fehler durch, allerdings scheint keine der Bedingungen zu greifen - es werden keine Datensätze gelöscht.
Was mache ich falsch?
Viele Grüße
Helmut
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen mit Bedingung löschen
19.10.2018 20:01:06
Daniel
Hi
Du setzt das Select Case falsch ein.
Probiers mal mit "If Then - ElseIf Then - ... Ende if"
Oder mit "Select Case True" und dann deine Bedigungen.
Des weiteren kann der Vergleich mit "=" keine Jokerzeichen verarbeiten.
Schau dir mal den Like-Operator in der Hilfe an, der wäre dann für dich das Richtige.
Oder prüfe mit Instr ob ein bestimmtes Zeichen im Text vorhanden ist.
Gruß Daniel
Anzeige
AW: Zeilen mit Bedingung löschen
19.10.2018 20:03:51
Uduuh
Hallo,
Select Case True
statt
Select Case DN
und sonst noch
Sub ungültige_DN_löschen()
Dim lastrow As Long, i As Long, DN As String
Sheets("Daten").Select
lastrow = Cells(Rows.Count, 4).End(xlUp).Row     'ermittelt die letzte Datenzeile in Spalte D
For i = lastrow To 2 Step -1
DN = Cells(i, 4).Value
Select Case True
Case Left(DN, 2) = "99"
Rows(i).Delete Shift:=xlUp          'löscht DN, die mit 99 beginnen
Case Not (IsNumeric(Left(DN, 1)))
Rows(i).Delete Shift:=xlUp          'löscht DN, die mit Buchstaben beginnen
Case DN Like "*#*"
Rows(i).Delete Shift:=xlUp          'löscht DN, die # enthalten
Case DN Like "*[*"
Rows(i).Delete Shift:=xlUp          'löscht DN, die [ enthalten
Case DN Like "*x*"
Rows(i).Delete Shift:=xlUp          'löscht DN, die x enthalten
End Select
Next i
End Sub

Gruß aus’m Pott
Udo

Anzeige
AW: Zeilen mit Bedingung löschen
19.10.2018 20:33:46
Daniel
Hi Udo
hast du das getestet?
Den Like-Operator solltest du dir nochmal anschauen.
Meines Wissens nach müsste dein Code alles Löschen, weil im Like das "#" der Joker für eine Ziffer ist und eckige Klammern dafür verwendet werden, um anzuzeigen, dass an der entsprechenden Stelle alle Zeichen erlaubt sind, die zwischen den Klammern stehen.
Gruß Daniel
Anzeige
AW: Zeilen mit Bedingung löschen
21.10.2018 19:49:30
Uduuh
Hallo Daniel,
hab ich vernachlässigt.
Dann doch besser mit InStr testen
Gruß aus’m Pott
Udo

AW: Zeilen mit Bedingung löschen
19.10.2018 20:33:47
Daniel
Hi Udo
hast du das getestet?
Den Like-Operator solltest du dir nochmal anschauen.
Meines Wissens nach müsste dein Code alles Löschen, weil im Like das "#" der Joker für eine Ziffer ist und eckige Klammern dafür verwendet werden, um anzuzeigen, dass an der entsprechenden Stelle alle Zeichen erlaubt sind, die zwischen den Klammern stehen.
Gruß Daniel
Anzeige
AW: Zeilen mit Bedingung löschen
22.10.2018 17:08:22
hewi
Hi Daniel und Udo,
herzlichen Dank für eure Hilfe - et het jefluppt! :-)
(Ich bin leider erst heute zum Testen gekommen)
Der Tipp mit INSTR funktioniert, LIKE "*#*" hat tatsächlich alle Datensätze gelöscht.
Bei 35.000 Datensätzen, von denen ca. 8.000 gelöscht werden, dauert das ganze relativ lange (ca. 15 min). ScreenUpdating habe ich bereits ausgeschaltet. Gibt es vielleicht noch einen Trick um das Ganze zu beschleunigen?
Viele Grüße aus Aachen
Helmut
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige