Range.ArrayFormula在特定情况下导致错误

时间:2016-03-10 12:34:42

标签: arrays excel vba range formula

我有一段代码将数组公式放在一个范围内。它正在抛出

  

运行时错误: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,则没有错误,但结果不正确

2 个答案:

答案 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。注意加倍的引号