Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: WorksheetFunction.SumProduct oder Makro?

WorksheetFunction.SumProduct oder Makro?
16.05.2024 11:07:38
Florian
Hi
mehr eine theoretische Frage: Vergleich Makro mit WorksheetFunction.
Ausgangslage: Gegeben sind zwei Arrays, wie im Beispiel unten. Die Produktsumme berechne ich dort mit einem Makro.

Es geht aber auch mit der Excel-Funktion WorksheetFunction.SumProduct, was ich bisher nicht in Betracht gezogen habe. Das scheint eine große Hilfe zu sein, da es schneller zu schreiben geht.

Sub Vergleich()

Dim Anzahl, Gewicht, c, Nummer As Long, GesamtGewicht1 As Double, GesamtGewicht2 As Double
Anzahl = Array(2, 4, 5)
Gewicht = Array(7, 2, 10)

'Berechnung mit For-Schleife:
ReDim c(LBound(Anzahl) To UBound(Anzahl))
For Nummer = LBound(Anzahl) To UBound(Anzahl)
GesamtGewicht1 = GesamtGewicht1 + Anzahl(Nummer) * Gewicht(Nummer)
Next Nummer

'Berechnung mit Excel-Funktion:
GesamtGewicht2 = WorksheetFunction.SumProduct(Anzahl, Gewicht)

'Ergebnisse:
Debug.Print GesamtGewicht1, GesamtGewicht2,
End Sub


Bin nur zwecksskeptisch: Gibt es Gründe, die WorksheetFunction zu verwenden oder nicht zu verwenden? Wird dabei vielleicht die Formelberechnung in den Arbeitsblättern angestossen?
Oder ist es egal?

LG, Flo
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: WorksheetFunction.SumProduct oder Makro?
16.05.2024 11:27:29
BoskoBiati2
Hi,

Gegenfrage: gibt es überhaupt einen Grund, das mit VBA und nicht mit einer einfachen Formel zu machen?
AW: WorksheetFunction.SumProduct oder Makro?
16.05.2024 11:33:39
daniel
Hi
nein, die Verwendung der Worksheetfunction sollte keinen Einfluss auf die Formelberechnung in den Arbeitsblättern haben.
die Formelberechnung der Arbeitsblätter wird erst angestoßen, wenn du auf den Arbeitsblättern Zellwerte änderst.
Die Worksheetfunctions sollten rein VBA-intern berechnet werden.

solange beides funktioniert, kannst du es dir eigentlich aussuchen.
bei Worksheetfunction ist der Code kürzer, benötigt weniger Variablen und ist schleifenfrei (was vor allem beim Testen im Einzelstep sehr angenehm ist)
die Berechnung über Schleife dürfte etwas schneller sein, was aber in der Regel erst dann relevant sein dürfte, wenn du sehr große Datenmengen durchrechnest.
daher würde ich zuerst mal die Worksheetfunction probieren, und wenn das Makro spürbare Durchlaufzeiten benötigt, wäre dann hier ein Punkt, wo du gegebenenfalls Rechenzeit einsparen kannst.

Die Schleife wird dann zwingend notwendig, wenn dein Summenprodukt nicht nur die reinen Zellwerte, sondern auch noch Zusatzberechnungen mit den Werten enthält, denn das, was du in Excel mit einer Matrixformel berechnest, kannst du nicht mit einer Worksheetfunction darstellen, hier musst du die Schleife selber programmieren.

Gruß Daniel


Anzeige
AW: WorksheetFunction.SumProduct oder Makro?
17.05.2024 12:56:37
Florian
Hallo Daniel,
danke für Deine ausführliche Antwort. OK, wenn das so problemlos ist, werde ich die Worksheetfunction verwenden.

Halo BoskoBiati2
warum nicht mit einer einfachen Formel? Du musst die Rahmenbedingungen berücksichtigen: Das Ergebnis ist innerhalb eines Makros erforderlich. Die Werte sind als Array gegeben, und das Ergebnis wird im nächsten Makroschritt weiterverarbeitet.

LG, Flo
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige