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

Error When Inserting Formula greater than 255 characters

我以前在我的程序中使用过这种方法来插入一个更大的公式,但是我收到了 "run-time error code 1004 unable to set the FormulaArray property of the range class" 这个公式:

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:P,0)>=8,IF(_Q2_>0,1,_M_),_M_)),IF(_Q_>0,1,IFERROR(IF((COLUMN(P3)-MATCH(_S_,$A:P,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:P,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

这次我不知道哪里出了问题,希望你能帮忙。

提前致谢

直接取自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:P,0))):O3,0))"

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

修复:

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