Die Excel Wühlkiste

Summenprodukt in VBA einsetzen (SumProduct)

Es ist beileibe nicht einfach, die Tabellenformel "Summenprodukt" in VBA einzusetzen -sie heisst dort "SumProduct"- , wenn gleichzeitig ein Vergleichsoperand eingesetzt wird.

Excel Interpretiert den Operanden falsch, wenn er nicht in Anführungszeichen gesetzt und gleichzeitig mit "&" verkettet wird. Absolut wichtig sind hierbei auch die angegebene Leerzeichen.

Wird der Code wegen der Länge noch einmal umgebrochen, sind wieder Anführungszeichen und die "&" - Verkettung notwendig.

Ausserdem muss hier die "Evaluate" Funktion eingesetzt werden, weil Excel wegen des Vergleichsoperanden nicht direkt mit "SumProduct" arbeiten kann. Wahrscheinlich weiss nicht einmal Microsoft, warum das so ist.

Danke an Melanie Breden, Frank Kabel, und Herbert Taferner, die bei der Entwicklung der SumProduct-Syntax maßgeblich mitgewirkt haben.


Option Explicit

Sub Daten_uebertragen()
Dim A As Double ' Vergleichsoperand
Dim B As String ' Name der ersten Tabelle
Dim I As Integer ' Schleifenzähler

B = Sheets(1).Name ' Weil der Name variiert

' Daten vorbereiten.
' Value * 1 wandelt Text in Zahl um, falls
' der Zellinhalt als Text formatiert sein sollte.
' Dafür gibt´s aber auch eine bessere Methode :-)
' Ausserdem wird die Matrix in einen Bereich
' neben die eigentlichen Tabelle verlegt, weil
' im Tabellenbereich auch Texte stehen. Mit Texten
' dazwischen kann SumProduct aber nicht arbeiten.


Worksheets(B).Select
Range("o10").Select
For I = 10 To 1050
Cells(I, 15).Select
If ActiveCell.Value > 0 Then
ActiveCell.Offset(0, 2).Value = ActiveCell.Offset(0, -6).Value * 0
End If
Next

' Jetzt geht´s los:

Worksheets("Lager 400").Select
Range("C3").Select

Do While ActiveCell.Value > 0
A = ActiveCell.Value
ActiveCell.Offset(0, 9).Value = _
Evaluate("=SumProduct((" & B & "!O5:O1028=" & A & ")*" & _
"(" & B & "!Q5:Q1028))")
ActiveCell.Offset(1, 0).Activate
Loop
End Sub
Die Excel Wühlkiste
Valid HTML 4.01 Strict
letzte Aktualisierung: 13.02.2009
Autor: Hubert Scheidgen / 04.02.2009
W3C CSS-Validierungsservice