Ich habe eine Reihe von Schleifen in einer Funktion und sie Schleife über ein Array, das ich als einen dynamischen Bereich definiert. Nachfolgend finden Sie einige Pseudo-Code von dem, was ichSetzen Bereich in ein Array für effizientere Schleifen
Dim myArray As Range
myArray(x, j) 'So the array loops through each column and then each row in that column
For i = 1 to lastRow
If myArray(x, j).Value = myArray(x, i).Value Then
'Do something
ich ein paar dieser Schleifen haben erreichen wollen, und es ist super langsam mit Datensätzen von mehr als 100 Zeilen. Grundsätzlich überall dort, wo ich myArray als einen Bereich definiert habe, möchte ich es in eine Variante ändern, so dass ich a) über das Array schleifen und b) das Array verwenden kann, um zu prüfen, ob die Werte gleich sind, anstatt den Bereich gegen einen Bereich zu prüfen. das ist wahrscheinlich die Ursache für die Performance-Probleme, wenn es 200 Zeilen * 500 Spalten
bearbeiten
Wie kann ich einen dynamisch definierten Bereich in einem Array-Format konvertieren?
Muss ich so etwas tun?
lastRow = UBound(myArray, 1)
lastColumn = UBound(myArray, 2)
Und dann
If myArray(x, j) = myArray(x, i) Then
'Do something
Also, was ist Ihre Frage? und realisiere "Wie kann ich das machen?" ist zu breit. –
@ScottCraner Messepunkt, geben Sie mir eine Sekunde, ich werde mehr Code hinzufügen, um zu klären – MJ95