2016-04-29 17 views
0

當我嘗試在使用宏的單元格中插入公式時出現語法錯誤。我似乎無法弄清楚我做錯了什麼?當我手動輸入時,公式工作正常。這裏是我的代碼:使用宏的INDEX公式的語法錯誤

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是工作表,lastRow3只是通過比較向左側一列自動填充內容。任何想法,爲什麼這是一個錯誤?

僅供參考:此公式從另一列中找出一列中的值並給出相鄰的條目。

+2

常見的錯誤,將 「ZZZ」 與 「」 ZZZ 「」 – Rosetta

+0

這工作過,但我想這使得Excel的不穩定。執行需要很長時間。 – harry71152

回答

1

填充全範圍時,最好使用R1C1格式。

同樣使用vba設置最後一行,沒有理由讓所有INDEX(L:L,MATCH("ZZZ",D:D))都找到最後一行,因爲代碼本身可以直接設置它。

使用此:

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

獲得#VALUE!錯誤與此:( – harry71152

+0

@ harry71152好吧,這是一個結果。複製並粘貼公式是在F2中,代碼放在那裏。粘貼在這裏的評論。 –

+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