Anzeige
Archiv - Navigation
1788to1792
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

for each

for each
05.11.2020 11:32:08
Ulf
Hallo Excel-Freunde,
um die Programmlaufzeit zu optimieren suche ich eine Möglichkeit
in einer "For Each rng_aktuell in rng_Bereich" Schleife
ein paar Zellen zu überspringen.
So geht es nicht: Set rng_aktuell=rng_aktuell.offset(15;0)
Spätestens bei Next bin ich wieder wo ich war.
Muss ich auf eine andere form der Schleife umsteigen?
Wenn ja stellt sich die Frage was ist am schnellsten.
Welchen Unterschied macht es geschwindigkeitemäßig ob ich
For i_Zeile = ... To ..
oder DO while ... nehme?
bzw. mit cells(i_Zeile,...) oder mit rng_Start.Offset(...,...) arbeite.
Viele Grüße
Ulf

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: for each
05.11.2020 11:40:01
RPP63
Moin!
Arbeite mit (temporären) Arrays.
Mehr kann man ob der rudimentären Threaderöffnung nicht sagen.
Gruß Ralf
AW: for each
05.11.2020 13:41:17
Ulf
Hi,
guter Denkanstoß, ich nehme den Rangebereich und spreche die Zellen über die
Nummer im Rangebereich an, das sollte schnell sein und man ist flexibel.
Ulf
AW: for each
05.11.2020 11:57:42
Daniel
Hi
bei Objektschleifen ist es nicht möglich, den "Schleifenzähler" in irgendeiner Form zu manipulieren, um Objekte aus der ursprünglichen Gruppe zu überspringen.
das geht nur mit normalen Zählschleifen, im Regelfall mit Step, im Einzelfall nach Bedingung auch dadurch, dass man den Schleifenzähler verändert.
For-Schleifen sind etwas schneller als Do-Schleifen
in den meisten fällen dürfte das aber nicht "kriegsentscheidend" sein.
Der unterschied ist, dass bei einer For-Schleife der Schleifenendwert fixiert abgelegt wird und somit schneller verfügbar ist, dafür aber auch nicht nachträglich veränderbar ist.
daher ist auch For Each bei Objekten sehr schnell, VBA legt sich hier die Objektmenge "zugriffsgünstig" zurecht, so dass das Schleifenzählerobjekt schneller verarbeitet werden kann als beim normalen Objektzugriff
der unterschied zwischen cells(i_Zeile,...) und rng_Start.Offset(...,...) dürfte auch sehr gering ausfallen. Hier würde ich mich daran orientieren, was für dich einfacher zu programmieren ist. Bei der Rangevariable rng_Start.Offset ist beispielsweise das Tabellenblatt über die Rangevariable vordefiniert. Bei Cells(i_Zeile,...) müsstest du das Tabellenblatt noch mit angeben.
ansonsten musst du halt schauen, obs einfacher ist mit dem Offset-Wert oder mit der absoluten Zeilennummer zu arbeiten, das hängt aber von der konkreten Aufgabenstellung ab.
Der Einfluss auf die Geschwindigkeit sollte gering sein.
Gruß Daniel
Anzeige
AW: for each
05.11.2020 12:19:39
Ulf
Hallo Daniel,
danke für die Informationen,
Ich hatte in einer For Each für eine Untermenge eine Do While
und bin diese Untermenge sozusagen 2x also mit beiden Schleifen durchlaufen.
Die Do While werde ich weglassen, muß dafür paar Variablen mehr machen in denen
ich rückwirkend in bereits durchlaufenen Zeilen agiere.
Euch allen noch einen schönen und weiter so sonnigen Tag
Ulf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige