Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1472to1476
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

Lange Laufzeit For-Schleife

Lange Laufzeit For-Schleife
09.02.2016 16:30:35
SteffenS
Hallo Zusammen,
ich habe nachfolgende Schleife in meinem Code und aktuell läuft diese 14s.
Habt ihr eine Idee wie ich diese noch beschleunigen kann.
Es werden 711 Zeilen durchlaufen:
'Formeln einsetzen
For i = 12 To last_cell
'Abfrage ID
If WS.Cells(i, 5).Value <> "" And WS.Cells(i, 4).Value <> "X" Then
For j = 17 To 28
'Formeln einsetzen
If WS.Cells(i, 5).Value Like "ID*" Then
'Suchbegriff setzen
astring = WS.Cells(i, 5).Value & WS.Range("K14").Value
'Kontrollsumme
WS.Cells(i, j).FormulaR1C1 = "=SUMIF([" & hdl_susa_imp & "]" & asheet & "!R1C" & aspalte & ":R" & last_cell_i & "C" & aspalte & ",""" & astring & """,[" & hdl_susa_imp & "]" & asheet & "!R1C" & j - 5 & ":R" & last_cell_i & "C" & j - 5 & ")"
Else
'Suchbegriff setzen
astring = WS.Cells(i, 5).Value & adef
'normal
WS.Cells(i, j).FormulaR1C1 = "=SUMIF([" & hdl_susa_imp & "]" & asheet & "!R1C" & aspalte & ":R" & last_cell_i & "C" & aspalte & ",""" & astring & """,[" & hdl_susa_imp & "]" & asheet & "!R1C" & j - 5 & ":R" & last_cell_i & "C" & j - 5 & ")"
End If
'Prüfung Erlöse/Aufwendungen
If WS.Cells(i, 4).Value = "E" Then
WS.Cells(i, j).Value = WS.Cells(i, j).Value
ElseIf WS.Cells(i, 4).Value = "K" Then
WS.Cells(i, j).Value = WS.Cells(i, j).Value * -1
Else
WS.Cells(i, j).Value = "Kenner fehlt"
End If
Next j
End If
Next i
Danke Euch schon mal.
VG Steffen Schmerler

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Lange Laufzeit For-Schleife
09.02.2016 16:42:37
Daniel
Hi
1. Wertzuweisungen, welche sich innerhalb der Schleife nicht verändern, sollten immer ausserhalb der Schleife stattfinden.
Falsch ist:
For j = 17 To 28
If WS.Cells(i, 5).Value Like "ID*" Then
astring = WS.Cells(i, 5).Value & WS.Range("K14").Value
besser wäre:

If WS.Cells(i, 5).Value Like "ID*" Then
astring = WS.Cells(i, 5).Value & WS.Range("K14").Value
For j = 17 To 28
desweiteren sollte man beim Einfügen von Formeln versuchen, diese nicht per Schleife in jede Zelle einzeln, sondern möglichst in alle Zellen gleichzeitig einzutragen.
das ist immer dann der Fall, wenn sich die Formel per copy-Paste in die anderen Zellen übertragen lässt.
um das zu ermöglichen, solltest du deine absolten Spaltenbezüge: & "C" & j - 5 & als relative Zellbezüge darstellen: & "C[-5]" & , denn dann ist die Formel (zumnindest für diesen Bereich) per Copy-paste in die anderen Spalten übertragbar.
Gruß Daniel

Anzeige
AW: Lange Laufzeit For-Schleife
09.02.2016 16:46:02
SteffenS
Hallo,
danke für die schnelle Antwort.
Wie könnte der Übertrag denn aussehen, da ich bisher immer die Variante nutze?
Danke nochmals :-)
VG SteffenS

AW: Lange Laufzeit For-Schleife
09.02.2016 17:01:58
Daniel
was für ein Übertrag?
ich werde jetzt nicht ohne eine Erklärung was die Formel machen soll und eine Beispieldatei diese Formel analysieren und dir dafür konkrete Verbesserungsvorschläge machen.
Gruß Daniel

AW: Lange Laufzeit For-Schleife
09.02.2016 20:55:37
SteffeS
Hallo Daniel,
die Formel soll abhängig von bestimmten Kriterien die Ergebnisse darstellen.
Aufgrund der Anzahl an Formeln habe ich das Problem, dass diese große Menge zu Performanceproblemen bei der Berechnung führt. Aus diesem Grund habe ich diese Form gewählt.
Es handelt sich um reine SummeWenn-Formeln, welche in Zellen geschrieben wird.
Da ich am Ende die Formeln in Werte umwandeln muss ist die Frage, ob das kopieren mir hilft.
Was meinst Ihr/meinst Du?
VG SteffenS

Anzeige
AW: Lange Laufzeit For-Schleife
09.02.2016 23:04:16
Piet
hallo
ich weiss nicht ob die Formel schneller ist, oder die Summe per VBA mit If auszuwerten?
könnte evtl. ein interessanter Versuch sein hierzu mal einen Vergleich zu machen.
Dazu müsste man aber Wissen was genau die Formel beinhaltet.
mfg Piet

AW: Lange Laufzeit For-Schleife
10.02.2016 21:19:50
SteffenS
Hallo,
hier ein paar Beispiele für die Formeln
=SUMMEWENN([MRSNG_HDL_SUSA_IMP.XLSB]SuSa_imp_I!$AC$1:$AC$5928;"1201621165"; [MRSNG_HDL_SUSA_IMP.XLSB]SuSa_imp_I!$L$1:$L$5928)
=SUMMEWENN([MRSNG_HDL_SUSA_IMP.XLSB]SuSa_imp_I!$AC$1:$AC$5928;"1201699991"; [MRSNG_HDL_SUSA_IMP.XLSB]SuSa_imp_I!$L$1:$L$5928)
=SUMMEWENN([MRSNG_HDL_SUSA_IMP.XLSB]SuSa_imp_I!$AE$1:$AE$5928;"1201699991Toyota Marken"; [MRSNG_HDL_SUSA_IMP.XLSB]SuSa_imp_I!$L$1:$L$5928)
Es ändern sich meist nur die Kriterien bzw. Summenspalten
Wäre schön, wenn ihr nochmal schauen könntet.
VG SteffenS
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige