2012-08-10 104 views
1

這個數組公式只是正常CTRL SHT輸入:ARRAYFORMULA VBA中使用Excel 2007

={IF(ROWS(A$7:A7)>A$4,"",IF(SUMPRODUCT((consumers=$A$6)*(data=A$5)*(data=A$5<>""))>0,INDEX 
(employees,SMALL(IF(((consumers=$A$6)*(data=A$5)*(data=A$5<>"")),COLUMN(Data!$B$2:$AC$2)-COLUMN 
(Data!$B$2)+1),ROWS(A$7:A7)))))} 

我做了一些研究和閱讀,我將不得不使用R1C1 notatation如果我想用這個公式中的VBA ......所以這是我迄今:

Sub frmarry() 
    Range("y28").Select 
    Selection.FormulaArray = "=IF(ROWS(R28C25:R28C25)>R26C25,"",IF(SUMPRODUCT((consumers=R27C25)* 
    (data=R24C7)*(data=R24C7<>""))>0,INDEX(staff,SMALL(IF(((consumers=R27C25)*(data=R24C7)* 
    (data=R24C7<>"")),COLUMN(Data!$R2C2:$R2C29)-COLUMN(Data!R2C2)+1),ROWS(R28C25:R28C25)))))" 
End Sub 

現在,當我運行程序我得到一個標誌:

'unable to set the FormaulaArray property of the Range class' 

如果我選擇調試,它會突出顯示上面的arrayformula。

我剛剛使用excel設置來將我的公式設置爲R1C1表示法,所以在轉換中可能會出現一些誤區。由於我不熟悉R1C1表示法,我希望有人更熟悉R1C1可以幫助我解決這個問題,或者指出我朝某個方向發展,以便解決這個VBA問題。

謝謝。

+0

當我將它輸入到Excel表格中時,數組公式給我一個錯誤。好像你錯過了什麼? – 2012-08-10 17:44:26

+0

試一下沒有VBA數組公式中的美元符號 – 2012-08-10 17:47:11

+0

感謝Siddharth Rout ......我只是意識到我列出了兩個不同的arrayformula ......一個指向A7,另一個指向Y28 ......但我相信arrayformula本身是正確的。 – thomasvermaak 2012-08-10 17:50:01

回答

2

試試這個。 This works

Sub frmarry() 
    Range("Y28").FormulaArray = _ 
    "=IF(ROWS(R28C25:R28C25)>R26C25,"""",IF(SUMPRODUCT((consumers=R27C25)*" & _ 
    "(data=R24C7)*(data=R24C7<>""""))>0,INDEX(staff,SMALL(IF(((consumers=R27C25)" & _ 
    "*(data=R24C7)*(data=R24C7<>"""")),COLUMN(Data!R2C2:R2C29)-COLUMN(Data!R2C2)" & _ 
    "+1),ROWS(R28C25:R28C25)))))" 
End Sub 
+0

哇...感謝您的幫助......看到一個解決方案如此之快,然後甚至不理解它有點驚人:)我想我理解「」「」但我不明白什麼&Chr( 10)在做什麼?謝謝。 – thomasvermaak 2012-08-10 18:00:26

+0

我已刪除這些。這是在公式欄中的續行。刪除它以避免混淆。每當有疑問時,記錄一個宏;) – 2012-08-10 18:02:47

+0

再次感謝。只是一個簡短的問題...在我的第一個數組公式中,你會看到我的行(A $ 7:A7)鎖定了...我如何鎖定R1C1表示法? – thomasvermaak 2012-08-10 18:06:51