Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
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

Performance Zeilen löschen

Performance Zeilen löschen
Carsten
Guten Tag,
wie schaffe ich es dies zu beschleunigen
Do While TimeValue(ActiveCell.Value) kleiner TimeValue(timefrom)
ActiveCell.EntireRow.Delete
Loop
habe ca. 2700 Datensätze da kann sowas endlos dauern.
In der ersten Zeile der Spalte steht "Uhrzeit" das sollte dort stehen bleiben.
Die Zeilen darunter bis zu einer Bestimmten Uhrzeit soll dann gelöscht werden.
mfg
Carsten

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Performance Zeilen löschen
16.08.2010 09:10:07
Carsten
Application.ScreenUpdating = False
Application.ScreenUpdating = True
hab ich jetzt hinzugefügt geht schon deutlich besser.
AW: Performance Zeilen löschen
16.08.2010 09:52:12
{Boris}
Hi Carsten,
die Verwendung von ActiveCell zeigt, dass Du JEDE Zeile einzeln selektierst. DAS ist die eigentliche Bremse. Zudem löst jedes Löschen eine Neuberechnung aus. Je nach dem, wie viel Formeln drin sind, kann das auch sehr bremsen. Also: Berechnungen temporär ausschalten.
Grüße Boris
AW: Performance Zeilen löschen
16.08.2010 11:03:52
JogyB
Hallo Carsten,
ich gehe mal davon aus, dass die Zeiten in Spalte A stehen, musst Du ggf. anpassen. Wieso nimmst Du eigentlich TimeValue? Hast Du die Zeiten etwa als Text formatiert? Ich würde dann aber in jedem Fall die Eigenschaft .Text nehmen, denn dann bist Du auf der sicheren Seite, falls es doch mal korrekt als Zeit formatiert ist.
Das hier läuft selbst bei 20000 zu löschenden Zeilen in 2-3s ab.
Sub loeSchen()
Const timeFrom = "11:25:00"
Const sPalte = 1 ' Spalte A
Dim zeiLe As Long
Dim zuLoeschen As Range
With ActiveSheet
For zeiLe = 2 To .Cells(.Rows.Count, sPalte).End(xlUp).Row
If TimeValue(.Cells(zeiLe, sPalte).Text) 

Gruß, Jogy
Anzeige
AW: Performance Zeilen löschen
16.08.2010 16:53:02
Tino
Hallo,
kannst mal diesen Code testen.
Die Uhrzeit, Spalte und die Tabelle müsstest Du im Code noch anpassen.
Sub Loeschen_Mit_Formel()
Dim oSH As Worksheet, iCalc As Integer
Dim timefrom As Double
Dim strFormel$, strSpalte$

'Spalte mit Uhrzeiten 
strSpalte = 1

'die Uhrzeit anpassen 
timefrom = TimeSerial(17, 0, 0)

'Tabelle anpassen 
Set oSH = Sheets("Tabelle1")

With Application
 iCalc = .Calculation
 .Calculation = xlCalculationManual
 .ScreenUpdating = False
 
     With oSH.UsedRange
        With .Columns(.Columns.Count).Offset(0, 1)
            'entsprechende Formel 
            strFormel$ = _
            "=IF(AND(ROW()>1,TIME(HOUR(RC1),MINUTE(RC1),SECOND(RC1))<" & _
            Replace(CStr(timefrom), ",", ".") & "),True,ROW())"
            strFormel$ = Replace(strFormel, "RC1", "RC" & strSpalte)
            
            .Formula = strFormel$
            
            oSH.UsedRange.Sort Key1:=.Cells(1, 1), Order1:=xlAscending, Header:=xlNo
            
            On Error Resume Next
                .SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete
                .EntireColumn.Delete
            On Error GoTo 0
        End With
     End With
 
 .ScreenUpdating = True
 .Calculation = iCalc
End With

End Sub
Gruß Tino
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige