插入大于255个字符的公式时出错

时间:2015-09-01 10:31:17

标签: excel vba excel-vba excel-formula array-formulas

我以前在我的程序中使用了这个方法来插入一个更大的公式,但是我收到了#34;运行时错误代码1004无法设置范围类的#Formula 34的FormulaArray属性。用这个:

Sub TEST()
Dim QFormula As String
Dim QCountF As String
Dim QCountF2 As String
Dim WStart As String
Dim MoreDash As String
Dim ValueF As String

    QFormula = "=IF($K3=4,IF(_Q_>0,1,_M_),IF($K3=2,IF(_Q_>0,1,IF(COLUMN(P3)-MATCH(_S_,$A$1:P$1,0)>=8,IF(_Q2_>0,1,_M_),_M_)),IF(_Q_>0,1,IFERROR(IF((COLUMN(P3)-MATCH(_S_,$A$1:P$1,0)+1)-_V_<=13,1,_M_),_M_))))"

    QCountF = "COUNTA(OFFSET(INDIRECT(ADDRESS(ROW(P3),COLUMN(P3)-4)),0,1,1,3))"
    QCountF2 = "COUNTA(OFFSET(INDIRECT(ADDRESS(ROW(P3),COLUMN(P3)-8)),0,1,1,3))"
    WStart = """START"""
    MoreDash = """-"""
    ValueF = "VALUE(MATCH(1,INDIRECT(ADDRESS(ROW(P3),MATCH(_S_,$A$1:P$1,0))):O3,0))"

With ActiveCell
    .FormulaArray = QFormula
    .Replace "_Q_", QCountF
    .Replace "_Q2_", QCountF2
    .Replace "_S_", WStart
    .Replace "_M_", MoreDash
    .Replace "_V_", ValueF

  End With

  End Sub

我不知道这次我出错了什么,希望你能帮忙。

提前致谢

1 个答案:

答案 0 :(得分:0)

直接从msdn site

如果使用此属性输入数组公式,则公式必须使用R1C1引用样式,而不是A1引用样式(请参阅示例)。

Worksheets("Sheet1").Range("E1:E3").FormulaArray = "=Sum(R1C1:R3C3)"

更新修改

正如您在评论中所述,即使msdn声明您必须使用R1C1引用,A1参考也可以。

代码中的实际问题是:

ValueF = "VALUE(MATCH(1,INDIRECT(ADDRESS(ROW(P3),MATCH(_S_,$A$1:P$1,0))):O3,0))"

您在替换代码中有另一个_S_,因为它已经超过_S_ .Replace,所以永远不会更改。

修正:

ValueF = "VALUE(MATCH(1,INDIRECT(ADDRESS(ROW(P3),MATCH(""START"",$A$1:P$1,0))):O3,0))"