Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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
Anzeige
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
Anzeige
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
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
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