Discussion:
Überflüssige Zeilen löschen
(zu alt für eine Antwort)
Joachim Eger
2013-11-16 17:58:44 UTC
Permalink
Hallo NG,

ich habe ein kleines Problem.
Ich bekomme öfter ein Tabellenblatt mit ca. 25000 Zeilen, alles Text.
In Spalte A befinden sich Leerzellen in unregelmäßigen Abständen und
ebenfalls Zellen, deren Text mit zB. "ABCDEF" oder "XYZ" anfangen.
Lassen sich die Zeilen in denen der Anfangstext erscheint und die Zeilen
mit den Leerzellen in einem Rutsch löschen?
Wenn das funktionieren sollte, würde mich das sehr freuen.
Vielen Dank im Voraus und viele Grüße
Joachim
Claus Busch
2013-11-16 18:11:31 UTC
Permalink
Hallo Joachim,
Post by Joachim Eger
Ich bekomme öfter ein Tabellenblatt mit ca. 25000 Zeilen, alles Text.
In Spalte A befinden sich Leerzellen in unregelmäßigen Abständen und
ebenfalls Zellen, deren Text mit zB. "ABCDEF" oder "XYZ" anfangen.
Lassen sich die Zeilen in denen der Anfangstext erscheint und die Zeilen
mit den Leerzellen in einem Rutsch löschen?
fast. Probiere es mal mit folgendem Makro:

Sub Test()
Dim LRow As Long
Dim i As Long

With ActiveSheet
LRow = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("A1:A" & LRow).SpecialCells(xlCellTypeBlanks) _
.EntireRow.Delete Shift:=xlUp

For i = LRow To 2 Step -1
If Left(Cells(i, 1), 6) = "ABCDEF" Or _
Left(Cells(i, 1), 3) = "XYZ" Then
Rows(i).Delete
End If
Next
End With
End Sub


Mit freundlichen Grüßen
Claus
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Joachim Eger
2013-11-16 18:22:10 UTC
Permalink
Hallo Claus,

danke für die schnelle Hilfe.
Es hat zwar etwas Zeit gebraucht die ca. 4500 Zeilen zu löschen,
aber es funktioniert bestens.

Recht herzlichen Dank und viele Grüße
Joachim
Claus Busch
2013-11-16 18:45:51 UTC
Permalink
Hallo Joachim,
Post by Joachim Eger
Es hat zwar etwas Zeit gebraucht die ca. 4500 Zeilen zu löschen,
aber es funktioniert bestens.
probiers mal so, geht schneller:
Sub Test()
Dim LRow As Long
Dim i As Long

With ActiveSheet
LRow = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("A1:A" & LRow).AutoFilter Field:=1, Criteria1:= _
"=ABCDEF*", Operator:=xlOr, Criteria2:="=XYZ*"
.Range("A2:A" & LRow).EntireRow.Delete shift:=xlUp

.Range("A2:A" & LRow).SpecialCells(xlCellTypeBlanks) _
.EntireRow.Delete shift:=xlUp
End With
End Sub


Mit freundlichen Grüßen
Claus
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Joachim Eger
2013-11-16 18:59:39 UTC
Permalink
Hallo Claus,
es geht schneller, aber alle Zeilen bleiben im Autofilter und es bleiben
noch reichlich Leerzeilen übrig.

Viele Grüße
Joachim
Claus Busch
2013-11-16 19:11:32 UTC
Permalink
Hallo Joachim,
Post by Joachim Eger
es geht schneller, aber alle Zeilen bleiben im Autofilter und es bleiben
noch reichlich Leerzeilen übrig.
ja, Fehler meinerseits. Probiere es so:

Sub Test()
Dim LRow As Long

With ActiveSheet
LRow = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("A1:A" & LRow).AutoFilter Field:=1, Criteria1:= _
"=ABCDEF*", Operator:=xlOr, Criteria2:="=XYZ*"
.Range("A2:A" & LRow).SpecialCells(xlCellTypeVisible) _
.EntireRow.Delete shift:=xlUp
.AutoFilterMode = False
LRow = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("A2:A" & LRow).SpecialCells(xlCellTypeBlanks) _
.EntireRow.Delete shift:=xlUp
End With
End Sub


Mit freundlichen Grüßen
Claus
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Joachim Eger
2013-11-16 19:18:53 UTC
Permalink
Hallo Claus,
ich glaube, so kann es bleiben. Es läuft alles bedeutend schneller ab.

Recht vielen Dank und viele Grüße
Joachim
Robert Feldmann
2013-11-17 14:10:50 UTC
Permalink
Hallo Joachim,

versuch es auch mal mit Sortieren. Geht deutlich schneller.

Einzige Voraussetzung, in der zu sortierenden Spalte sollte immer was
drin stehen.

Mache ich auch oft in Macros so. Erst lösche ich den Inhalt
(clearcontent) dann Sortiere ich neu. Geht viel schneller als die Zeile
zu löschen.

Gruß
Robert
Post by Joachim Eger
Hallo Claus,
ich glaube, so kann es bleiben. Es läuft alles bedeutend schneller ab.
Recht vielen Dank und viele Grüße
Joachim
--
Nicht was Du sagst ist entscheidend, sondern was verstanden wird.
Joachim Eger
2013-11-17 18:05:19 UTC
Permalink
Hallo Robert,

danke für den Tip, aber die vorgegebene Struktur sollte erhalten bleiben.

Viele Grüße
Joachim

Loading...