HERBERS Excel-Forum - das Archiv

Thema: Ist Arrays subtrahieren ohne Schleife möglich?

Ist Arrays subtrahieren ohne Schleife möglich?
Florian
Hallo

kann man in einem Makro 2 gleichgroße arrays zellenweise subtrahieren , ohne Schleifen?
Zum Beispiel mit worksheetfunction oder was anderes?

Derzeit verwende ich dafür folgende Function und bin auf der Suche nach einem direkteren Weg.

Function aSubtrahieren(aMinuend, aSubtrahend)

'Berechnet Array mit dem Differenz der Zellen in jeder Zelle: e(z,s)=aMinuend(z,s)-aSubtrahend(z,s)

Dim z As Long, s As Long, e
ReDim e(LBound(aMinuend, 1) To UBound(aMinuend, 1), LBound(aMinuend, 2) To UBound(aMinuend, 2))
For z = LBound(aMinuend, 1) To UBound(aMinuend, 1)
For s = LBound(aMinuend, 2) To UBound(aMinuend, 2)
e(z, s) = aMinuend(z, s) - aSubtrahend(z, s)
Next s
Next z
aSubtrahieren = e
End Function


Danke und LG,
Florian
AW: Ist Arrays subtrahieren ohne Schleife möglich?
daniel
Hi
ich wüsste jetzt nicht, dass VBA oder Excel solche Matrixoperatoren für ein- oder zweidimenisonale Arrays implementiert hat (lasse mich aber gerne eines besseren belehren)
allerdings ist die Verarbeitungsgeschwindigkeit von Arrays in einer Schleife sehr hoch, so dass man die Schleife über Array-Variablen aus Performancegründen nicht scheuen muss. Denn selbst wenn es einen entsprechenden Befehl gäbe, intern müsste dieser ebenfalls die Berechnung in einer Schleife durchführen.
Langsam sind lediglich Schleifen, die über Excelzellen laufen, was in erster Linie daran liegt, dass beim Ändern von Excelobjekten eine ganze Reihe von Hintergrundaktionen ausgelöst werden, was beim Ändern eines Variablenwertes nicht passiert.
Gruß Daniel