Anzeige
Archiv - Navigation
1328to1332
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige