Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
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
Inhaltsverzeichnis

löschen einer Zeile

löschen einer Zeile
08.10.2013 10:58:15
Stefan
Hallo Zusammen,
habe folgendes Makro, welches mir alle Zeilen löschen soll die nicht ".1" in der
Spalte A enthalten...
For I = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Cells(I, 1) ".1" Then Rows(I).Delete
Next I
Das Makro funktioniert zwar, braucht aber für meine Listen bis zu 5 min.
(Screen update hab ich ausgeschaltet)
Wollte mal fragen, ob es eine schnellere Variante gibt dies zu tun ?
Gruß
Stefan

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: löschen einer Zeile
08.10.2013 12:21:19
Bastian
Hallo Stefan,
schneller sollte es gehen, wenn Du erst die Tabelle nach Spalte A sortierst.
Dann nach dem letzten Eintrag mit ".1" suchst, und alles "danach" löschst, und dann nach dem ersten Eintrag
mit ".1" suchst und alles "davor" löschst.
Versuch mal folgenden Code:
Sub loeschen()
Dim Zeile
'Tabelle sortieren
With ActiveSheet
Columns("A:A").Select
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("A1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SetRange Range("A1:A59")
.Sort.Header = xlGuess
.Sort.MatchCase = False
.Sort.Orientation = xlTopToBottom
.Sort.SortMethod = xlPinYin
.Sort.Apply
End With
'Alle Zeilen nach dem letzten Eintrag löschen
Zeile = ActiveSheet.Cells.Find(What:=".1", SearchOrder:=xlByRows, SearchDirection:= _
xlPrevious).Row
If Zeile  ".1" Then
Range(Cells(Zeile - 1, 1), Selection.End(xlUp)).EntireRow.Delete
End If
End Sub

Gruß, Bastian

Anzeige
Korrektur
08.10.2013 12:31:06
Bastian
Bitte die Zeile:
.Sort.SetRange Range("A1:A59")
ändern in :
.Sort.SetRange Range("A:A")
Gruß, Bastian

AW: Korrektur
08.10.2013 12:45:41
Bastian
Sorry,
.Sort.SetRange Range("A:A") ist natürlich Quatsch.
bitte Ändern in
.Sort.SetRange .UsedRange
Hoffe, nun passt es.
Gruß, Bastian

AW: Korrektur
08.10.2013 13:23:40
Stefan
Hallo Bastian,
danke für deine schnelle Hilfe.
Ich denke dein Ansatzpunkt mit sortieren dann Bereich löschen ist super.
Leider bleibt das Macro bei
.Sort.SetRange .UsedRange
stehen ?
:-)
Stefan

AW: Korrektur
08.10.2013 13:47:05
Bastian
Hallo Stefan,
bleibt das Makro wirklich stehen? Mit welcher Fehlermeldung?
Ich habe mal einen Test gemacht mit 500.000 Zeilen und 70 Spalten.
Das Makro läuft dann bei mir in 38 sec. durch.
Wie groß sind denn Deine zu sortierenden Tabellen?
Gruß, Bastian

Anzeige
AW: Korrektur
08.10.2013 14:09:33
Stefan
Hallo Bastian,
https://www.herber.de/bbs/user/87573.xlsm
Hier mal meine Datei. Vermutlich hab ich irgendwas noch am Makrocode anders...
:-)
Stefan
P.S. Danke für deine Hilfe !!!

AW: Korrektur
08.10.2013 14:37:35
Stefan
sooy den Haken vergess ich immer
:-)

AW: Korrektur
08.10.2013 16:37:39
Bastian
Hallo Stefan,
habe den Code angepasst. Sollte nun so passen.
Da Du noch Überschriften hast, habe ich die Sortierreihenfolge umgestellt, und lösche nun nur die Zeilen unter dem letzten Eintrag mit einer ".1" in Spalte A.
Ich lasse aber vorsichtshalber den Thread offen.
Sub loeschen()
Dim Zeile
Dim lngLZeile As Long
Dim lngLSpalte As Long
Dim rngRange As Range
lngLZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
lngLSpalte = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Set rngRange = Range("A1").Resize(lngLZeile, lngLSpalte)
'Tabelle sortieren
With ActiveSheet
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("A1"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.Sort.SetRange rngRange
.Sort.Header = xlGuess
.Sort.MatchCase = False
.Sort.Orientation = xlTopToBottom
.Sort.SortMethod = xlPinYin
.Sort.Apply
End With
'Alle Zeilen nach dem letzten Eintrag löschen
Zeile = ActiveSheet.Range("A:A").Find(What:=".1", LookIn:=xlValues, SearchOrder:=xlByRows,  _
SearchDirection:= _
xlPrevious).Row
If Zeile 
Gruß, Bastian

Anzeige
AW: Korrektur
08.10.2013 16:57:16
Stefan
Hallo Bastian,
Volltreffer !!!
Alles ok. Funktioniert sekundenschnell...
DANKE DANKE DANKE
:-)
Stefan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige