我有一段代码将数组公式放在一个范围内。它正在抛出
运行时错误:438“对象不支持此属性或方法”
但是当我在单元格中粘贴相同的公式并点击Ctrl+Shift+Enter
一切正常。
strFormula = "=IF(SUM(--(A2=Data!$A$2:$A$1423)*--(B2=YEAR(Data!$B$2:$B$1423))* --(C2=MONTH(Data!$B$2:$B$1423)) * (Data!$E$2:$E$1423))=0,TEXT(,),SUM(--(A2=Data!$A$2:$A$1423)*--(B2=YEAR(Data!$B$2:$B$1423))* --(C2=MONTH(Data!$B$2:$B$1423)) * (Data!$E$2:$E$1423)))"
shtAbsoluteData.Range("D2").ArrayFormula = strFormula
插入IF
条件时会出现问题。因此,如果没有IF
,则以下代码可以正常工作:
strFormula = "=SUM(--(A2=Data!$A$2:$A$1423)*--(B2=YEAR(Data!$B$2:$B$1423))* --(C2=MONTH(Data!$B$2:$B$1423)) * (Data!$E$2:$E$1423))"
shtAbsoluteData.Range("D2").ArrayFormula = strFormula
注意:如果我使用shtAbsoluteData.Range("D2").Formula
,则没有错误,但结果不正确
答案 0 :(得分:0)
您不能直接通过vba输入长度超过255个字符的字符串,就像您的情况一样。对于此类情况,请使用Replace - 技巧。
答案 1 :(得分:0)
代码可能应为:
strFormula = "=IF(SUM(--(A2=Data!$A$2:$A$1423)*--(B2=YEAR(Data!$B$2:$B$1423))* --(C2=MONTH(Data!$B$2:$B$1423)) * (Data!$E$2:$E$1423))=0, """" ,SUM(--(A2=Data!$A$2:$A$1423)*--(B2=YEAR(Data!$B$2:$B$1423))* --(C2=MONTH(Data!$B$2:$B$1423)) * (Data!$E$2:$E$1423)))"
如果文字带有空参数会导致问题,那么它应该会有所帮助。
PS。注意加倍的引号