无法设置范围vba 2003的FormulaArray属性
我试图在VBA2003中设置范围的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
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根据它所在的行移动?我已经更新了上面的帖子。你可能需要刷新页面才能看到它