Clever-Excel-Forum

Normale Version: FormulaArray-Eigenschaft des Range-Objektes kann nicht festgelegt werden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich habe folgenden Code, welcher nicht ausführbar ist.

Code:
Sub Makro3()

Worksheets("Jahresstatistik").Range("R3").FormulaArray = "=SUMPRODUCT((Auszahlungen!R8C1:R10000C1=TRANSPOSE(IF('Top30 - Teil 1'!R6C81:R500C81=""x"",'Top30 - Teil 1'!R6C17:R500C17)))*(Auszahlungen!R8C7:R10000C7>=RC[-17])*(Auszahlungen!R8C7:R10000C7<DATE(YEAR(RC[-17])+1,MONTH(RC[-17]),DAY(RC[-17])))*(Auszahlungen!R8C4:R10000C4))"

End Sub

Es kommt immer folgende Fehlermeldung:

FormulaArray-Eigenschaft des Range-Objektes kann nicht festgelegt werden

Wenn ich statt ".FormulaArray" einfach ".Value" nehme, dann schreibt er mir zwar die Formel in die richtige Zelle, aber ohne "{}", was hier unbedingt erforderlich ist, da sonst die Formel nicht berechnet werden kann.

Ich hoffe, dass mir jemand helfen kann.

LG
Thomas
Hallo,

die Formel ist viel zu kompliziert um sie nachbauen zu können. Deshalb nur 2 Ideen:

- SumProdct ist bereits eine Matrix-Formel, reicht dann nicht "Formula"

- Wenn die Formal in einer Zelle funktioniert, kann man den Cursor darauf stellen und im Debug-Fenster "? activecell.formula" eintippen (Danke an RPP63)

Das "?" ist der "Print"-Befehl von Basic aus den 80-ern.

mfg
Hallo!

1. Wenn ich nur "Formula" verwende, wird zwar die Formel in die Zelle geschrieben, aber ohne {} und als Ergebnis wird #WERT angezeigt. Wenn ich dann STRG Shift Enter drücke passt es.
2. Wie komme ich im Excel 2016 zum Debug Fenster?
(17.03.2023, 10:07)Fennek schrieb: [ -> ]- SumProdct ist bereits eine Matrix-Formel, reicht dann nicht "Formula"
Er verwendet MTRANS, damit muss auch Summenprodukt als Matrixformel eingetragen werden.

EDIT: Hab es gerade mal getestet. Die Formel kann mit .Formula in die Zelle geschrieben werden, ist somit wohl syntaktisch korrekt. Ich kann diese Formel auch in der Zelle mit CSE als Matrixformel eingeben. Das Einfügen mittels FormulaArray funktioniert hingegen nicht. Sehr seltsam ...
Hier die Formel ohne VBA, vielleicht hilft das:

Code:
=SUMMENPRODUKT((Auszahlungen!$A$8:$A$10000=MTRANS(WENN('Top30 - Teil 1'!$CC$6:$CC$500="x";'Top30 - Teil 1'!$Q$6:$Q$500)))*(Auszahlungen!$G$8:$G$10000>=A3)*(Auszahlungen!$G$8:$G$10000<DATUM(JAHR(A3)+1;MONAT(A3);TAG(A3)))*(Auszahlungen!$D$8:$D$10000))


Hallo Steuerfuzzi!

Ja genau das ist mein Problem. Sobald ich es mit FormulaArray mache, kommt die Fehlermeldung.
Hi

Liegt entweder an der Länge der Formel oder nur an den Blattnamen. Ohne die Blattnamen geht es.
Code:
=SUMMENPRODUKT(($A$8:$A$10000=MTRANS(WENN($CC$6:$CC$500="x";$Q$6:$Q$500)))*($G$8:$G$10000>=A3)*($G$8:$G$10000<DATUM(JAHR(A3)+1;MONAT(A3);TAG(A3)))*($D$8:$D$10000))

und so geht es auch
Code:
SUMMENPRODUKT((Aus!$A$8:$A$10000=MTRANS(WENN('Top30'!$CC$6:$CC$500="x";'Top30'!$Q$6:$Q$500)))*(Aus!$G$8:$G$10000>=A3)*(Aus!$G$8:$G$10000<DATUM(JAHR(A3)+1;MONAT(A3);TAG(A3)))*(Aus!$D$8:$D$10000))
so habe es gefunden. Max 256 Zeichen.
Gruß Elex
In einer Formel sowohl absolute als auch relative (RC) Adressierung zu verwenden, könnte auch Probleme bereiten.

Code:
Cells(1, 2).FormulaArray = "=SUMPRODUCT(($A$8:$A$10000=TRANSPOSE(IF($CC$6:$CC$500=""x"",$Q$6:$Q$500)))*($G$8:$G$10000>=A3)*($G$8:$G$10000<DATE(YEAR(A3)+1,MONTH(A3),DAY(A3)))*($D$8:$D$10000))"

zeigt keine Fehler an.
Hallo Elex!

Dein Hinweis war gut. Wenn ich es ohne die Blattnamen auf eine anderes Tabellenblatt mache, funktioniert es.
Nur ist das Problem, dass ich eben diese Verknüpfungen auf ein anderes Tabellenblatt brauche.
Wie geschrieben max 256 Zeichen.
Lege Dir für die Bereiche kurze Namen an und verwende die in der Formel.
Danke für den Tipp. Es liegt tatsächlich an der Länge der Formel. Sobald ich sie kürze, funktioniert sie.
Es liegt also nicht direkt an den Namen der Tabellenblättern, sondern einfach an den vielen Zeichen in der Formel und da spielen natürlich die Verknüpfungen zu anderen Tabellenblättern eine Rolle.