Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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