Hallo Andreas,
auf der von mir verlinkten Seite steht z.B.
Evaluate("=SUM((A1:A5000=" & K1 & ")*(B1:B5000=" & K2 & ")*C1:C5000)")
wobei K1 und K2 hier Variablen sind. Dies gilt für Zellbezüge jedoch entsprechend.
Evaluate("=SUM((A1:A5000=" & Cells(3,17) & ")*(B1:B5000=" & Cells(4,17) & ")*C1:C5000)")
Du schreibst in deiner Formel z.B.:
Evaluate("cells(4,17)/INDEX(D2:O2;MATCH(cells(3,17);(D1:O1);0))")
Dir müsste auffallen, dass hier Cells nicht automatisch groß geschrieben wird, VBA dies also nicht als Befehl erkennt. Dies liegt daran, dass du Cells innerhalb der Anführungszeichen geschrieben hast. Somit wird das alles als Text interpretiert.
Du musst deine Zellbezüge außerhalb der Anführungszeichen und mit einem &-Zeichen in den Formelstring einbauen, wie in dem Beispiel oben.
Beispiele
Sub Beispiel()
Cells(1, 1) = "= Cells(1, 2)" 'das wäre der Code entsprechend deiner Evaluate-Formel; bringt Fehler
Cells(2, 1).FormulaLocal = "=" & Cells(1, 2).Address
End Sub
Dieser Code bringt einen Fehler (wieder entsprechend deinem Beispiel):
Sub beispiel2()
MsgBox Evaluate("=SUM(cells(3,1),cells(3,2))")
End Sub
So funktioniert es:
Sub beispiel3()
MsgBox Evaluate("=SUM(" & Cells(3, 1) & "," & Cells(3, 2) & ")")
End Sub
Gruß
M.O.