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

时间:2015-06-10 06:19:07

标签: excel vba excel-vba

我正在尝试在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.需要一些指导来解决它。

1 个答案:

答案 0 :(得分:1)

如果我将rowNum = 5用于测试目的,您的公式将评估为

=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根据它所在的行移动? -

您不能像这样增加公式数组中的行。要实现您想要的效果,请仅在单元格AM4中输入公式,然后将其填充。见这个例子

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