Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
992to996
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
992to996
992to996
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilen löschen, wenn Bedingung in Spalte erfüllt

Zeilen löschen, wenn Bedingung in Spalte erfüllt
17.07.2008 16:07:00
maruseru
Hallo werte Profis
Der untenstehende Code würde mir in abgeänderter Form sehr helfen.
Ich möchte aber gerne zwei Kriterien eingeben. Nun kommt der Clou:
Value sollte alphanumerisch sein.
Alle Zeilen mit einem Eintrag B1* bis B9* und
Alle Zeilen mit einem Eintrag C1* bis C9*
sollen gelöscht werden.
Danke und Gruss
Maruseru

Sub löschen()
Dim i
For i = Cells(Rows.Count, 20).End(xlUp).Row To 1 Step -1
On Error Resume Next
If InStr(Cells(i, 20).Value, "umme") Then
Rows(i).Delete
End If
Next
End Sub


2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen, wenn Bedingung in Spalte erfüllt
17.07.2008 16:35:00
Erich
Hallo Vorname(?),
schau dir hier mal ein paar Möglichkeiten an:

Option Explicit
Sub löschen()
Dim i As Long ' genau deklarieren ist besser
Dim rngL As Range
' löscht auch B3a
For i = Cells(Rows.Count, 20).End(xlUp).Row To 1 Step -1
'   On Error Resume Next  ' das würde ich weglassen!
If (Left(Cells(i, 20), 1) = "B" Or Left(Cells(i, 20), 1) = "C") _
And Mid(Cells(i, 20), 2, 1) Like "[0-9]" Then
Rows(i).Delete
End If
Next
' löscht B3a nicht
For i = Cells(Rows.Count, 20).End(xlUp).Row To 1 Step -1
If (Left(Cells(i, 20), 1) = "B" Or Left(Cells(i, 20), 1) = "C") _
And IsNumeric(Mid(Cells(i, 20), 2, 1)) Then
Rows(i).Delete
End If
Next
' wie davor, aber schneller
For i = Cells(Rows.Count, 20).End(xlUp).Row To 1 Step -1
If (Left(Cells(i, 20), 1) = "B" Or Left(Cells(i, 20), 1) = "C") _
And IsNumeric(Mid(Cells(i, 20), 2, 1)) Then
If rngL Is Nothing Then
Set rngL = Cells(i, 1)
Else
Set rngL = Union(rngL, Cells(i, 1))
End If
End If
rngL.EntireRow.Delete
Next
For i = Cells(Rows.Count, 20).End(xlUp).Row To 1 Step -1
If Len(Cells(i, 20)) > 1 Then
If (Left(Cells(i, 20), 1) = "B" Or Left(Cells(i, 20), 1) = "C") _
And IsNumeric(Right(Cells(i, 20), Len(Cells(i, 20)) - 1)) Then
Rows(i).Delete
End If
End If
Next
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Zeilen löschen, wenn Bedingung in Spalte erfüllt
17.07.2008 16:55:25
Erich
Hallo,
vergiss mein voriges Posting - vor allem die "schnellere" Variante habe ich zu schnell hingeschrieben.
Das "rngL.entirerow.delete" gehört natürlich hinter die Schleife.
Und falls es keinen Treffer gibt, soll es doch keinen Fehler geben...
Also noch mal:

Option Explicit
Sub löschen()
Dim i As Long ' genau deklarieren ist besser
Dim rngL As Range
For i = Cells(Rows.Count, 20).End(xlUp).Row To 1 Step -1
If Left(Cells(i, 20), 1) Like "[BC]" And IsNumeric(Mid(Cells(i, 20), 2, 1)) Then
If rngL Is Nothing Then
Set rngL = Cells(i, 1)
Else
Set rngL = Union(rngL, Cells(i, 1))
End If
End If
Next
If Not rngL Is Nothing Then rngL.EntireRow.Delete
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige