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

Möglichst performant Zellen befüllen

Möglichst performant Zellen befüllen
26.11.2019 23:23:20
Michael

Hallo zusammen,
ich habe eine Problem, dass die Art wie ich Zellen befülle nicht wirklich performant ist & die Rechenleistung maximal 1.000 Einträge zulässt oder ansonsten abstürzt. Daher gehe ich davon aus, dass mein Code sehr imperformant ist. Der Fokus liegt nur auf dem einfügen der Werte - der Rest passt. Ich kann 50.000.000 Werte zügig vergleichen, aber sobad mehr als das schreiben von 1.000 Einträgen getriggered wird, klappt es nicht mehr
Anbei der auszugsweise Code:
VergleichsTool2.Worksheets(2).Select
Cells(Row, MapColumn(Col)).Interior.Color = 255 'Rote Markierung der Zelle
Cells(Row, MapColumn(Col)).Font.ColorIndex = 1 'Schwarze Markierung des Textes
Cells(Row, MapColumn(Col)).Font.Bold = True 'Fette Markierung des Textes
und
Cells(RowReport, 2) = colval1 ' Wert der alten Version wird angezeigt in Spalte 2
Cells(RowReport, 3) = "<>" ' <> Zeichen in Spalte 3
Cells(RowReport, 4) = colval2 ' Wert der neuen Version wird angezeigt in Spalte 4
'Die Zellen zu den einzelnen Werten werden festgelegt
ColumnLetterOld = Col_Letter(Col) 'Buchstabe der Spalte in der alten Version
ColumnLetterNew = Col_Letter(ColNew) ' Buchstabe der Spalte in der neuen Version
Cells(RowReport, 5) = ColumnLetterOld & Row ' Es wird der Buchstabe der Spalte und die Zahl der Reihe in der alten Version angegeben
Cells(RowReport, 6) = ColumnLetterNew & Row ' Es wird der Buchstabe der Spalte und die Zahl der Reihe in der neuen Version angegeben
Cells(RowReport, 7) = ColTitel
LG
Darius

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Am schnellsten geht es ...
27.11.2019 00:08:27
lupo1
... im Variantarray.
Modern könnte es auch mit Power Query schnell laufen.
AW: Am schnellsten geht es ...
27.11.2019 01:59:19
Michael
Wie würde das denn beispielshaft bei Cells(...) aussehen?
LG
Darius
Gar nicht. Cells() ist langsam.
27.11.2019 07:11:31
lupo1
Du wolltest schnell. Daher kein (Bearbeiten von) Cells(), (nur Auslesen, Variantbearbeiten, Zurückschreiben).
AW: Gar nicht. Cells() ist langsam.
27.11.2019 08:49:25
Michael
Okay, jetzt habe ich das Problem, dass ich einzelne Werte konstant einfügen muss. Wie kann ich denn zumindestens das dann bei Cells( ) besser gestalten, ist Range besser oder wie kann ich denn dann für dieses Beispiel zum Einfügen von einzelnen Werten array verwenden?
AW: Möglichst performant Zellen befüllen
27.11.2019 08:57:35
Daniel
Hi
wenn man größere Zellbereiche in einer Schleife Zellenweise bearbeiten muss, geht so sehr schnell:
1. man liest die Zellinhalte in eine Arrayvariable ein
2. man führt die Bearbeitung innerhalb der Array-Variable durch
3. man schreibt das Ergebnisarray in den Zellbereich zurück.
dabei muss beachtet werden dass beim Zurückschreiben in den Zellbereich dieser genauso groß sein muss wie das Array.
Beispiel:
du hast im Zellbereich A1:B10000 Zahlen stehen, die miteinander multipliziert werden müssen.
das geht mit Zellen so:
dim z as Long
For z = 1 to 10000
Cells(z, 3).value = Cells(z, 1).Value * Cells(z, 2).value
next
mit Arrays dann so
dim arr
dim z as Long
Arr = Range("A1:C10000).value
for z = 1 to ubound(arr, 1)
arr(z, 3) = arr(z, 1) * arr(z, 2)
next
Range("A1:C10000").value = arr

ist etwas aufwendiger, aber viel schneller
Gruß DAniel
Anzeige
AW: Möglichst performant Zellen befüllen
27.11.2019 09:17:28
Michael
Cool! Ich probiere das gleich aus. Bei "Dim arr" soll ich es als welches "As" abspeichern?
Alles ohne 'As' ist 'Variant'. Gruß owT
27.11.2019 10:19:19
Luc:-?
:-?
AW: Alles ohne 'As' ist 'Variant'. Gruß owT
27.11.2019 11:06:00
Michael
Danke :)

156 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige