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

Sortieren und Spalten mit best. Begriff löschen

Sortieren und Spalten mit best. Begriff löschen
21.07.2006 11:39:21
Peter
Guten Tag
Ich habe eine Datei mit mehreren Tabellen, in denen ich alle Zeilen, in denen in Spalte AA "löschen" steht, löschen will. Bisher habe ich Zeile für Zeile abgearbeitet, aber das geht relativ lange. Deshalb strebe ich folgende Lösung an:
Damit die bleibenden Zeilen in der gewünschten Reihenfolge bleiben, sind diese in Spalte AF (32 Spalte) durchnummeriert (von 1 an aufwärts).
Nun sortiere die Zeilen ab Zeile 1 bis derjenigen Zeile, in der die letzte Zeile "usedrange" steht.
Nach dem Sortieren habe ich alle Zeilen mit dem Eintrag "löschen" in einem Bereich. Nun möchte ich alle Zeilen, die in diesem Bereich liegen, anwählen und löschen.
Damit sollte meines Erachtens die Laufzeit des Makros wesentlich verkürzt werden.
Kann mir jemand hier auf die Sprünge helfen?
Danke, Peter

Sub Zeilen_loeschen()
Dim x As Integer
Dim ende, iRow As Long
For x = 1 To Sheets.Count
ende = 'letzte Zeilennummer innerhalb usedrange ermitteln
'Zeilen 1:ende nach Spalte 27 (primär) und 32 (sekundär) sortieren
'Bereich mit Zeilen in denen in Spalte 27 "löschen" steht ermitteln
'diesen Bereich löschen
Next x
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortieren und Spalten mit best. Begriff löschen
21.07.2006 12:58:31
Harald
Hallo Peter,
mein Vorschlag mit Autofilter. Ist auch recht schnell.
Dim Lrow As Long
Lrow = Cells(Rows.Count, 27).End(xlUp).Row
Range("AA:AA").AutoFilter Field:=1, Criteria1:="löschen"
Range("AA2:AA" & Lrow).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Range("AA:AA").AutoFilter Field:=1
Gruss Harald
AW: Sortieren und Spalten mit best. Begriff löschen
21.07.2006 13:07:17
Peter
Hallo Harald
Vielen Dank für die Nachricht.
Ich arbeite in dieser Tabelle grundsätzlich mit dem Autofilter.
Zuletzt muss ich die Zeilen jedoch löschen, da es sich um eine Druckvorlage handelt und der Drucker unter anderem keine Filterung akzeptiert.
Gruss, Peter
Anzeige
AW: Sortieren und Spalten mit best. Begriff löschen
21.07.2006 13:39:12
Harald
Na dann,
bleib bei der zeilenweisen Abarbeitung, jedoch ohne Usedrange (zählt nicht nur Inhalt sondern auch Formatierung).
Wenn sicher ist, dass die letzte gefüllte Zelle nicht über 32000 hinausgeht, ersetze beide Long durch Integer (dann wird's nahezu doppelt so schnell)
Dim Lrow As Long, i as long
Lrow = Cells(Rows.Count, 27).End(xlUp).Row
for i = Lrow to 2 step -1
if cells(i, 27) = "löschen" then Rows(i).Delete
next i
Gruss Harald
AW: Sortieren und Spalten mit best. Begriff löschen
21.07.2006 14:10:04
Peter
Hallo Harald
Vielen Dank.
Nein, über 32000 Zeilen nutze ich nicht.
Kannst du mir sagen, warum mit nachstehendem Code nur die entsprechenden Zeilen im aktiven Worksheet, nicht aber die übrigen im Workbook gelöscht werden? Muss ich irgend einen Zähler wieder auf Null stellen?
Danke, Peter
Option Explicit

Sub Zeilen_loeschen()
Dim x As Integer
Dim lRow, i As Integer
For x = 1 To Sheets.Count
lRow = Cells(Rows.Count, 27).End(xlUp).Row
For i = lRow To 2 Step -1
If Cells(i, 27) = "löschen" Then Rows(i).Delete
Next i
Next x
End Sub

Anzeige
AW: Sortieren und Spalten mit best. Begriff löschen
21.07.2006 14:21:25
Harald
Hi,
der Code bezieht sich nur auf das gerade aktive Blatt.
Kann man mit ner With-Anweisung lösen.
Der Punkt vor den Range-Angaben ersetzt somit Sheets(x)
Hab's nur händisch korrigiert...ohne test ;-)

Sub Zeilen_loeschen()
Dim x As Integer
Dim lRow, i As Integer
For x = 1 To Sheets.Count
with sheets(x)
lRow = .Cells(Rows.Count, 27).End(xlUp).Row
For i = lRow To 2 Step -1
If .Cells(i, 27) = "löschen" Then .Rows(i).Delete
end with
Next i
Next x
End Sub

Gruss Harald
AW: Sortieren und Spalten mit best. Begriff löschen
21.07.2006 14:44:47
Peter
Hallo Harald
Hatte noch irgendwelche Probleme und habe dann das ganze wie folgt abgeändert:

Sub Zeilen_loeschen()
Dim x As Integer
Dim lRow, i As Integer
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
lRow = Ws.Cells(Rows.Count, 27).End(xlUp).Row
For i = lRow To 2 Step -1
If Ws.Cells(i, 27) = "löschen" Then Ws.Rows(i).Delete
Next i
Next Ws
End Sub

Vielen Dank für deinen Support.
Peter
Anzeige
Hinweis
21.07.2006 15:00:00
Harald
Deine Deklaration macht Schwierigkeiten, wenn Diagramme o.ä. als Sheet eingefügt sind
Bleib bei Sheets oder Dim ws as object würde dann helfen
Schönes WE
Gruss Harald
AW: Hinweis
31.07.2006 08:58:38
Peter
Hallo Harald
Vielen Dank für den Hinweis. Meine Rückmeldung kommt so spät, weil ich ferienhalber abwesend war.
Gruss, Peter

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige