【问题标题】:Range.ArrayFormula causing error in specific casesRange.ArrayFormula 在特定情况下导致错误
【发布时间】:2016-06-25 07:22:03
【问题描述】:

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

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

【问题讨论】:

    标签: arrays excel vba range formula


    【解决方案1】:

    您不能像您的情况一样直接通过 vba 输入长度超过 255 个字符的字符串。对于这种情况,请使用Replace-trick。

    【讨论】:

      【解决方案2】:

      代码应该是:

      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)))"
      

      如果它是 Text 带有空参数的问题应该会有所帮助。

      PS。注意双引号

      【讨论】:

        猜你喜欢
        • 2017-12-19
        • 2021-08-15
        • 2015-02-22
        • 1970-01-01
        • 2020-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多