warum dauert Zeilen löschen 10 Sek.?
08.01.2026 09:47:25
Christian
ich hoffe ihr habt einen Rat was ich noch probieren könnte. Ich und auch Chatgpt sind mit unserem Latein am Ende.
Das Problem in meinem Blatt Codes! dauert das Löschen von Zeilen ca. 10 Sek. während das Berechnen von Formeln eine Sache von Sekundenbruchteilen ist.
In der ganzen Mappe gibt es nur 4 Formeln, alle im Blatt Codes,
in K1: =ANZAHL2(D:D), in K2: =ANZAHL2(E:E)
in F1:F88326 =WENN(E1>"";AUFRUNDEN(RANG.GLEICH(E1;E$1:INDEX(E:E;$K$1);0)/$K$2;2);"")
und in H1:H88326 =WENN(D1>"";"http://web.archive.org/web/20220630000000/https://www.imdb.com/name/" & D1 & "/";"")
Es gibt keine Worksheet Change Makros, die sich auf das Blatt auswirken und keine bedingten Formatierungen.
Was habe ich bereits getan?
das am Ende stehende Makro laufen lassen, um eventuell unnötige Formatierungen ect. zu entfernen
geprüft, mit Strg+Ende wo sich der genutze Bereich befindet (endet bei K88326)
die Inhalte des Blatts als Werte in eine neue Mappe eingefügt (dann klppt das mit dem Löschen)
eine Kopie des Blatts in einer neuen Mappe erstellt (dann geht das Löschen etwas schneller)
Wenn mir jemand sagen kann, wie ich diese Ausmaße auf 300 KB schrumpfen kann, ohne die vermeintliche Fehlerquelle zu entfernen, mache ich das gerne und lade dann auch gerne eine Bsp Datei hoch.
hier das Makro:
Sub BereinigeCodesBlatt()
Dim ws As Worksheet
Dim lastRow As Long, lastCol As Long
Dim rngKeep As Range
Dim shp As Shape
Dim cmt As Comment
Dim area As Range
Set ws = ThisWorkbook.Sheets("Codes")
' --- Bereiche, die behalten werden ---
Set rngKeep = Union(ws.Range("A1:I88326"), ws.Range("K1:K2"))
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' --- 1. Inhalte und Formate außerhalb der behaltenen Bereiche löschen ---
ws.Cells.ClearFormats
ws.Cells.ClearContents
' Inhalte/Formate in den behaltenen Bereichen wiederherstellen
For Each area In rngKeep.Areas
area.Value = area.Value
area.NumberFormat = "General"
Next area
' --- 2. Objekte (Shapes, Textfelder, Bilder) außerhalb des behaltenen Bereichs löschen ---
For Each shp In ws.Shapes
If Intersect(shp.TopLeftCell, rngKeep) Is Nothing Then
shp.Delete
End If
Next shp
' --- 3. Kommentare/Notizen außerhalb des behaltenen Bereichs löschen ---
For Each cmt In ws.Comments
If Intersect(cmt.Parent, rngKeep) Is Nothing Then
cmt.Delete
End If
Next cmt
' --- 4. Alte Zeilen/Spalten außerhalb löschen ---
On Error Resume Next
lastRow = ws.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lastCol = ws.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
On Error GoTo 0
If lastRow > 88326 Then ws.Rows("88327:" & lastRow).Delete
If lastCol > 11 Then ws.Columns("L:" & ws.Columns(lastCol).Address(False, False)).Delete
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox "Bereinigung abgeschlossen!", vbInformation
End Sub
Anzeige