Schnell sortieren
29.11.2019 12:04:54
Tobias
Guten Morgen,
Ich muss in meiner Datei sehr große Datenmengen sortieren. Da das aufgezeichnete Makro sehr lange dauert habe ich mal gegooglet und hier im Forum geschaut wie man schneller sortieren kann.
Dies habe ich dazu gefunden:
Hallo
probier mal das Makro hier, das ist bei mir c.a. 20x schneller als die Schleife von Christian _
und Jan (getestet mit 10000 Zeilen, von denen 1000 gelöscht werden müssen):
Sub löschen1()
Columns(1).Insert
With Range(Cells(1, 2), Cells(65536, 2).End(xlUp)).Offset(0, -1)
.FormulaR1C1 = "=if(rc2=""Abschnitt"", true, row())"
.Formula = .Value
.EntireRow.Sort key1:=Cells(1, 1), order1:=xlAscending, header:=xlNo
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
.EntireColumn.Delete
End With
End Sub
wenn die Sortierung der Daten verändert werden darf, oder du einen Schlüssel hast, nach dem du _
wieder zu zurücksortieren kannst, kannst du auch diesen Code verwenden, der ist kurz und noch _
einmal mehr als doppelt so schnell wie meine erster vorschlag (also c.a. Faktor 40 gegenüber der Schleife), außerdem sollte es keine Probleme bei sehr grossen Datenmengen geben:
Sub löschen3()
With Columns(1)
.EntireRow.Sort key1:=Cells(1, 1), order1:=xlAscending, header:=xlNo
.AutoFilter Field:=1, Criteria1:="Abschnitt"
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
End Sub
Ich möchte nichts löschen sondern nur sortieren aber irgendwie bekomme ich den Code nicht vernünftig angepasst.Es ist eine intelligente Tabelle und fängt ab Zeile 2 an. Es soll die Spalte P absteigend sortiert werden. Die Überschrift ist also in P2 und heißt [Akt.zeit] (so kann man ja auch in excel ansprechen).
Was muss ich an dem Code genau abändern?
Vielen Dank schon mal!
mfg
Tobias
Anzeige