FormulaArray-Problem
Sebastian
ich habe ein Problem mit der Zuweisung einer Matrixformel per VBA.
Wenn ich die unten stehende Formel per .Formula= eingebe, funktioniert es (nur eben nicht als Matrixformel, somit recht wertlos).
Wenn ich sie per .FormulaArray zuweise, bekomme ich die Fehlermeldung
"Die FormularArray-Eigenschaft des Range-Objektes kann nicht zugewiesen werden."
Ich habe mich über die Limitationen informiert und weiß, dass es einen Bug gibt, wessentwegen 255 Zeichen Maximum nicht überschritten werden dürfen
- der String ist aber bei weitem nicht so lang (207 Zeichen), auch die deutsche "Übersetzung", die Excel daraus macht, ist mit 227 unterhalb des Limits.
Der zugewiesene String lautet:
"=IF(J3="""","""",IF(SUM(IF(MOD(COLUMN(L3:BB3),3)=0,L3:BB3,0))=0,"""",ROUND(SUM(IF(MOD(COLUMN(J3:AZ3)-1,3)0,0,IF(ISNUMBER(J3:AZ3)*ISNUMBER(L3:BB3),J3:AZ3*L3:BB3,0)))/SUM(IF(MOD(COLUMN(L3:BB3),3)=0,L3:BB3,0)),0)))"
und er steht für die (Matrix-)Formel:
{=WENN(J3="";"";WENN(SUMME(WENN(REST(SPALTE(L3:BB3);3)=0;L3:BB3;0))=0;""; RUNDEN(SUMME(WENN(REST(SPALTE(J3:AZ3)-1;3)0;0;WENN(ISTZAHL(J3:AZ3)*ISTZAHL(L3:BB3);J3:AZ3*L3:BB3; 0) ))/SUMME(WENN(REST(SPALTE(L3:BB3);3)=0;L3:BB3;0));0))) }
Aufgabe ist es, den Durchschnitt gewichteter Werte zu erzeugen:
die jeweils erste (Punkte) und dritte (Gewichtung) Spalte eines Sets aus drei sollen multipliziert, alle diese Werte addiert
und durch die Summe der Gewichtungszahlen geteilt werden.
Weise ich die Formel zunächst über .formula= zu und wandle sie dann (per shift+strg+enter) in eine Matrixformel um, funktioniert es.
Hat jemand eine Idee, was ich falsch mache? Mein Testcode:
Dim s As String
s = "=IF(J3="""","""",IF(SUM(IF(MOD(COLUMN(L3:BB3),3)=0,L3:BB3,0))=0,"""",ROUND(SUM(IF(MOD( _
COLUMN(J3:AZ3)-1,3)0,0,IF(ISNUMBER(J3:AZ3)*ISNUMBER(L3:BB3),J3:AZ3*L3:BB3,0)))/SUM(IF(MOD(COLUMN(L3:BB3),3)=0,L3:BB3,0)),0)))"
MsgBox s
MsgBox Len(s)
Range("bc3").FormulaArray = s
Liebe Grüße und habt Dank für jede Hilfe!Sebastian