Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
848to852
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
848to852
848to852
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilen löschen, die nicht "ins Muster" passen

Zeilen löschen, die nicht "ins Muster" passen
06.03.2007 13:17:00
Till
Hallo Leute,
habe eine Datenbasis mit ca. 7000 Zeilen.
In Spalte C kommt entweder 2 oder 9 vor, wobei das immer alternierend sein sollte. D.h. zu jeder 2 gehört auch immer eine 9, dieses Pärchen stellt also ein Datenpaar dar.
Es kann jedoch vorkommen, dass zwischendurch unvollständige Datenpaare vorkommen. Diese (also die entsprechende Zeile) hätte ich gerne rausgelöscht.
Von Hand nach der Folge 29 29 29 u.s.w. zu suchen und alles andere rauszuschmeißen ist aber viel zu aufwändig.
Kann man das evtl. mit VBA automatisieren?
Am Ende soll es dann in Spalte C so aussehen:
z.B.
Zeile 500: 2
Zeile 501: 9
Zeile 502: 2
Bei dem Fall:
z.B.:
Zeile 500: 2
Zeile 501: 9
Zeile 502: 9
Zeile 503: 2
soll Zeile 502 automatisch und komplett gelöscht werden.
Gleiches gilt für z.B.
Zeile 500: 2
Zeile 501: 9
Zeile 502: 2
Zeile 503: 2
Zeile 504: 9
Zeile 505: 2
hier ist also die Zeile 502 ebenfalls überflüssig.
Ich hoffe, Ihr habt die Erklärung verstanden?!
Danke schon mal für die Hilfe!
Gruß Till

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen, die nicht "ins Muster" passen
06.03.2007 13:29:09
EtoPHG
Hallo Till,
Folgendes Makro in das Tabellenblatt kopieren, das Du Saubermachen willst.

Option Explicit
Sub erMache()
Dim rCell As Range
Dim iLastVal As Integer
Dim dx As Double
iLastVal = 2
For dx = ActiveSheet.Range("C65536").End(xlUp).Row To 1 Step -1
If (ActiveSheet.Cells(dx, 3) = 2 And iLastVal = 9) Or _
(ActiveSheet.Cells(dx, 3) = 9 And iLastVal = 2) Then
iLastVal = ActiveSheet.Cells(dx, 3).Value
Else
ActiveSheet.Cells(dx, 1).EntireRow.Delete
End If
Next dx
End Sub

Gruss Hansueli
Dim rCell As Range ... ist überflüssig owT
06.03.2007 13:30:55
EtoPHG
AW: Zeilen löschen, die nicht "ins Muster" passen
06.03.2007 13:33:00
Erich
Hallo Till,
noch'n Vorschlag:
Option Explicit
Sub Unpaare_Loeschen()
Dim zz As Long
For zz = Cells(Rows.Count, 3).End(xlUp).Row To 2 Step -1
If Cells(zz, 3) = Cells(zz - 1, 3) Then
If Cells(zz, 3) = 9 Then Rows(zz).Delete Else Rows(zz - 1).Delete
End If
Next zz
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Zeilen löschen, die nicht "ins Muster" passen
06.03.2007 14:02:00
Till
Hallo,
habe mal Deine erste Lösung genommen.
Leider haut mir der immer die erste Zeile weg, in der meine Titelbezeichnungen stehen. Wie lass ich das Makro erst ab Zeile 2 vergleichen, ohne Zeile 1 zu berühren?
Danke!
Gruß Till
AW: Zeilen löschen, die nicht "ins Muster" passen
06.03.2007 14:05:28
EtoPHG
Hallo Till,
Vermutlich meinst Du meine (Hansueli's) Lösung:

Statt:
For dx = ActiveSheet.Range("C65536").End(xlUp).Row To 1 Step -1
Schreibe:
For dx = ActiveSheet.Range("C65536").End(xlUp).Row To 2 Step -1

Sorry, Gruss Hansueli
AW: Zeilen löschen, die nicht "ins Muster" passen
06.03.2007 14:21:00
Till
Hallo Hansueli,
1A passt hervorragend, vielen vielen Dank!
Hast mir ne "Mords"-Mühe erspart...
Vielen Dank!
Gruß Till
Anzeige
AW: Zeilen löschen, die nicht "ins Muster" passen
06.03.2007 21:40:58
Daniel
Hallo
auch wenns schon gelöst ist, werfe ich noch mal diese Variante ins Rennen:
bei grossen Datenmengen wie bei dir sollte sie um einiges schneller sein.
Falls du bei dir nen Geschwindigkeitsunterschied feststellst, würds mich sehr interessieren
Sub Löschen()
Columns(1).Insert
With Range(Cells(2, 1), Cells(Cells(65536, 4).End(xlUp).Row, 1))
.FormulaR1C1 = "=IF(RC[3]=R[-1]C[3],TRUE,ROW())"
.Formula = .Value
End With
Range("A1").CurrentRegion.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes
On Error Resume Next
Columns(1).SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
On Error GoTo 0
Columns(1).Delete
End Sub

Gruß, Daniel
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige