VBA - Performanceoptimierung, Blockverarbeitung Start und End-Zeile finden
#1
Hallo Zusammen,

ich habe ein sehr großes Makro und dies dauert je nach Datenmenge schon mal 5 Minuten. 

Die Zeitintensivste Anweisung ist die Bestimmung von Blöcken
Code:
For zabschl = ersterAbschl To Zabschlanzahl

        For i = row_blockstart To ws_ausw.UsedRange.SpecialCells(xlCellTypeLastCell).row
            If ws_ausw.Cells(i, zabschlspalte).Value <> zabschl Then
                row_blockende = i
                ws_ausw.Cells(i, 1).EntireRow.Insert
                Exit For
            ElseIf i = ws_ausw.UsedRange.SpecialCells(xlCellTypeLastCell).row Then
                row_blockende = i + 1
                ws_ausw.Cells(row_blockende, 1).EntireRow.Insert
                Exit For
            End If
        Next i

Die Daten liegen sortiert vor und ich möchte immer jeweils Blockanfang und Blockende bestimmen für weitere Bearbeitungen...

Kann man dort noch etwas rausholen? 
Im Durchschnitt dauert es nur 16ms... aber es gibt viele Blöcke (Derzeit 1500+)

Eventeull ist die Funktion Filter oder etwas mit Find besser? 

Hat schon jemand Erfahrungen damit gesammelt? 

Vielen Dank und viele Grüße
Richarde
Antworten Top
#2
Hallo,

vielleicht würde es helfen eine Beispieldatei mit 3-4 Blöcken zu zeigen.

Wichtig wäre:

Zell-Typen

- Zahlen
- Texte
- Leerzeilen

sollte mit dem Original übereinstimmen.

mfg
Antworten Top
#3
Hallöchen,

übernimm die Daten in ein Array, prüfe im Array und fülle mit den Treffern ein bzw. zwei Collections. Dann arbeitest Du die Collections auf dem Blatt ab.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hi

Das Einfügen von Zeilen sollte in umgekehrter Reihenfolge (unten nach oben) gemacht werden und dabei die Events abgeschaltet sein.

Ist aber auch mit einer einfachen Formellösung schnell gemacht.


.xlsx   Leerzeilen zwischen Blöcken einfügen.xlsx (Größe: 12,34 KB / Downloads: 2)

Edit: Um eine zweite noch einfachere Formellösung ergänzt.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste