VBA-.Formula和.FormulaArray的用法。
參考附件︰http://www.funp.net/37873
感謝冰淇淋大大賜正下列程式碼︰
With Sheets(1)
.[P5].Resize(6, 6).Formula="=if((column()-11)=row(),"""",SUMPRODUCT(COUNTIF(OFFSET(INDIRECT(P$3),MATCH($O$3,INDIRECT(P$3),)-1,1,COUNTIF(INDIRECT(P$3),$O$3),),OFFSET(INDIRECT($N5),MATCH($N$4,INDIRECT($N5),)-1,1,COUNTIF(INDIRECT($N5),$N$4),))))"
.[P5].Resize(6, 6).Value =.[P5].Resize(6, 6).Value
.[P14].FormulaArray = "=IF(ROWS(B期)>=ROW(1:1),INDEX(INDIRECT(""_""&Q$13),SMALL(IF(COUNTIF(A期,B期),ROW(B期),100),ROW(1:1)))&"""","""")"
.[P14].Copy .[P15].Resize(8)
.[P14].Resize(9).Value =.[P14].Resize(9).Value
End With
End Sub
問題︰
為什麼函數公式可以作區域陣列,而程式卻不行,必須分多段施作(本格和COPY其餘範圍)?
即下列語法是錯誤的
.[P14].Resize(9).FormulaArray= "=IF(ROWS(B期)>=ROW(1:1),INDEX(INDIRECT(""_""&Q$13),SMALL(IF(COUNTIF(A期,B期),ROW(B期),100),ROW(1:1)))&"""","""")"
請問︰
是程式的硬性規則限制?
還是可以另改程式?
請各位前輩和先進不吝賜教!謝謝!
2 個解答
- 冰淇Lv 67 年前最佳解答
要用區域陣列公式需改為
.[P14].Resize(9).FormulaArray= "=IF(ROWS(B期)>=ROW(1:9),INDEX(INDIRECT(""_""&Q$13),SMALL(IF(COUNTIF(A期,B期),ROW(B期),100),ROW(1:9)))&"""","""")"
2014-02-14 07:23:55 補充:
原公式非區域陣列公式
~
改為區域陣列公式需於[P14]貼上公式
=IF(ROWS(B期)>=ROW(1:9),INDEX(INDIRECT("_"&Q$13),SMALL(IF(COUNTIF(A期,B期),ROW(B期),100),ROW(1:9)))&"","")
~
[P14]拉到[P22]
按Ctrl+Shift+Enter才可完成
2014-02-14 07:25:29 補充:
ps.我不會區域陣列公式,恰好碰對了
2014-02-14 15:18:22 補充:
原公式 非區域陣列公式
~
改為區域陣列公式 需於[P14]貼上公式
=IF(ROWS(B期)>=ROW(1:9),INDEX(INDIRECT("_"&Q$13),SMALL(IF(COUNTIF(A期,B期),ROW(B期),100),ROW(1:9)))&"","")
~
[P14] 拉到 [P22]
按 Ctrl+Shift+Enter 方可 呈現所求
~
故 原程式公式需改為 區域陣列公式
.[P14].Resize(9).FormulaArray= "=IF(ROWS(B期)>=ROW(1:9),INDEX(INDIRECT(""_""&Q$13),SMALL(IF(COUNTIF(A期,B期),ROW(B期),100),ROW(1:9)))&"""","""")"
~
參考檔案
00次群-E2