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