Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro zu beschleunigen??

Forumthread: Makro zu beschleunigen?

Makro zu beschleunigen?
19.09.2013 15:21:26
Georg
Hallo Excel Welt,
nachdem Hajo mir heute schon eine Stunde Gripsgymnastik ganz easy mit einem RETURN gelöst hat werde ich mutig und frage weiter. Das ff Makro soll aus einem Gesamtbestand an Datenzeilen nach bestimmten Kriterien die Zeilen rausschmeißen, bei denen die entsprechenden Zelle den Kriterien nicht entspricht. Hier: in Spalte R soll nur noch "2013" stehen bleiben. Da es ca. 30.000 Zeilen sind, die hier nach verscheidenen Kriterien in mehreren solchen Loops durchgekaut werden, dauert das recht lang.
Kann man das Ganze auch schneller machen? Ich habe in der Recherche geschaut, aber kann das Gefundene nicht so richtig auf meinen Fall anwenden...
SFZEILE = 0 ' Schleife zum Löschen der unnötigen Datensätze
Do Until Range("R7").Offset(SFZEILE, 0).Value = 0
If Range("R7").Offset(SFZEILE, 0).Value = "2014" _
Or Range("R7").Offset(SFZEILE, 0).Value = "2015" _
Or Range("R7").Offset(SFZEILE, 0).Value = "2016" Then
Range("R7").Offset(SFZEILE, 1).EntireRow.Delete
SFZEILE = SFZEILE - 1
End If
SFZEILE = SFZEILE + 1
Loop
Danke und Gruß Georg

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zu beschleunigen?
19.09.2013 15:38:52
Rudi
Hallo,
1. sollte man Zeilen immer von unten löschen.
2. steht in R der Text 2013 oder die Zahl?
Sub Loeschen()
With Range(Cells(7, 18), Cells(Rows.Count, 18).End(xlUp)).Offset(, 1000)
.FormulaR1C1 = "=if(or(rc18={""2013"",2013}),""x"",#n/a)"
.SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete
.Clear
End With
End Sub

Gruß
Rudi

Anzeige
cool!
19.09.2013 15:47:10
Georg
Hallo Rudi,
cool danke!
2013 steht dort als Zahl. Ich vermute, dann vereinfacht sich die Zeile
.FormulaR1C1 = "=if(or(rc18={""2013"",2013}),""x"",#n/a)"
zu
.FormulaR1C1 = "=if(rc18=2013)"
oder?
Warum löscht man von unten?
Und warum setzt man ".clear"?
Danke und Gruß Georg

Anzeige
AW: cool!
19.09.2013 16:00:36
Georg
hatte den Haken bei "offen" vergessen...

AW: cool!
19.09.2013 16:03:38
Rudi
Hallo,
.FormulaR1C1 = "=if(rc18=2013,""x"",#n/a)"
Warum löscht man von unten?
weil es einfacher ist.
Wenn man von oben löscht, rutschen ja die darunter liegenden nach. Löscht man von unten, ändert sich darüber nichts.
Und warum setzt man ".clear"?
es wird die durch das Makro eingebaute Formel wieder gelöscht.
Gruß
Rudi

Anzeige
alles klar - danke Rudi! owT
19.09.2013 16:06:10
Georg
.
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige