Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法设置范围vba 2003的FormulaArray属性_Vba_Excel - Fatal编程技术网

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

无法设置范围vba 2003的FormulaArray属性,vba,excel,Vba,Excel,我试图在VBA2003中设置范围的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”: Unabl

我试图在VBA2003中设置范围的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.

不知道问题出在哪里。我正在使用Excel2003。解决这个问题需要一些指导。

如果我采用
rowNum=5
进行测试,您的公式的计算结果为

=IF(A4=MIN(IF(月(A$4:A$3)=月(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(月(A$4:A$3)=月(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

谢谢,还有一件事,如何更改代码中的A4根据它所在的行移动?我已经更新了上面的帖子。你可能需要刷新页面才能看到它