无法设置范围vba 2003的FormulaArray属性

我想在vba 2003中设置范围的FormulaArray属性。我这样做,

代码:

Sheets("Sheet2").Range("AM4:AM" & (rowNum - 2)).FormulaArray = "=IF(A4=MIN(IF(MONTH(A$4:A$" & (rowNum - 2) & ")=MONTH(A4),A$4:A$" & (rowNum - 2) & ",1E+99)),A4,"")" 

它返回给我一个错误“1004”:

 Unable to set the FormulaArray Property of the range method. 

不确定是什么问题。 我正在使用Excel 2003.需要一些指导来解决它。

如果我将rowNum = 5作为testing目的,则您的公式计算结果为

=IF(A4=MIN(IF(MONTH(A$4:A$3)=MONTH(A4),A$4:A$3,1E+99)),A4,")

请注意,您最后错过了双引号?

尝试这个

 Sheets("Sheet2").Range("AM4:AM" & (rowNum - 2)).FormulaArray = _ "=IF(A4=MIN(IF(MONTH(A$4:A$" & _ (rowNum - 2) & _ ")=MONTH(A4),A$4:A$" & _ (rowNum - 2) & _ ",1E+99)),A4,"""")" 

上述公式现在评估为

=IF(A4=MIN(IF(MONTH(A$4:A$3)=MONTH(A4),A$4:A$3,1E+99)),A4,"")

编辑

如何改变代码中的A4按照它所在的行移动? –

你不能像这样增加公式数组中的行。 要达到您的要求,请仅在单元格AM4input公式,然后填写它。 看到这个例子

 rowNum = 8 With Sheets("Sheet2") .Range("AM4").FormulaArray = _ "=IF(A4=MIN(IF(MONTH(A$4:A$" & _ (rowNum - 2) & _ ")=MONTH(A4),A$4:A$" & _ (rowNum - 2) & _ ",1E+99)),A4,"""")" .Range("AM4:AM" & (rowNum - 2)).FillDown End With