2016-04-29 11 views
0

Ich erhalte einen Syntaxfehler, wenn ich versuche, eine Formel in eine Zelle mit Makro einzufügen. Ich kann nicht herausfinden, was ich falsch mache? Die Formel funktioniert einwandfrei, wenn ich sie manuell eingabe. Hier ist mein Code:Syntaxfehler für INDEX-Formel mit Makro

ws3.Range("F2:F" & lastRow3).Formula = "=INDEX($L$1:INDEX(L:L,MATCH("ZZZ",D:D)),AGGREGATE(15,6,ROW($K$1:INDEX(K:K,MATCH("ZZZ",D:D)))/($K$1:INDEX(K:K,MATCH("ZZZ",D:D))=D2),COUNTIF($D$1:$D2,D2)))" 

ws3 ist das Arbeitsblatt und lastRow3 ist nur um den Inhalt Autofill, indem Sie links auf eine Säule zu vergleichen. Irgendwelche Ideen, warum dies einen Fehler gibt?

FYI: Diese Formel findet Werte in einer Spalte aus einer anderen Spalte und gibt die angrenzenden Einträge.

+2

häufige Fehler, ersetzen "ZZZ" mit "" ZZZ "" – Rosetta

+0

Auch dies funktioniert, aber ich denke, das Excel instabil macht. Die Ausführung dauert sehr lange. – harry71152

Antwort

1

Wenn Sie einen vollständigen Bereich ausfüllen, verwenden Sie am besten das R1C1-Format.

Auch mit vba, um die letzte Reihe zu setzen gibt es keinen Grund für alle INDEX(L:L,MATCH("ZZZ",D:D)), um die letzte Zeile zu finden, da der Code selbst es direkt setzen kann.

verwenden:

ws3.Range("F2:F" & lastRow3).FormulaR1C1 = _ 
    "=INDEX(R1C12:R" & lastrow & "C12,AGGREGATE(15,6,ROW(R1C11:R" & lastrow & "C11)/(R1C11:R" & lastrow & "C11=RC[-2]),COUNTIF(R1C4:RC4,RC[-2])))" 
+0

Einen #WERT bekommen! Fehler mit diesem :( – harry71152

+0

@ harry71152 okay, es ist ein Ergebnis. Kopieren Sie und fügen Sie, was die Formel in F2 ist, die, die der Code dort eingefügt. Fügen Sie es in die Kommentare hier ein. –

+0

'INDEX ($ L $ 1: $ L $ 55, AGGREGATE (15,6, ROW ($ K $ 1: $ K $ 55)/($ K $ 1: $ K $ 55) = D2), COUNTIF ($ D $ 1: $ D2, D2)) ' – harry71152