Vba 插入大于255个字符的公式时出错
我以前曾在程序中使用此方法插入一个更大的公式,但我收到“运行时错误代码1004无法设置range类的FormulaArray属性”,如下所示:Vba 插入大于255个字符的公式时出错,vba,excel,excel-formula,array-formulas,Vba,Excel,Excel Formula,Array Formulas,我以前曾在程序中使用此方法插入一个更大的公式,但我收到“运行时错误代码1004无法设置range类的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_&
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
子测试()
作为字符串的Dim QFormula
Dim qcount作为字符串
Dim QCountF2作为字符串
像弦一样的线
像细绳一样模糊
作为字符串的Dim ValueF
QFormula=“=IF($K3=4,IF($Q>0,1,$M\)、IF($K3=2,IF($Q>0,1,IF(P3列)匹配($S\$A$1:P$1,0)>=8,IF($Q2\>0,1,$M\)、IF($Q\>0,1,IFERROR(IF($S\$A$1:P$1)->直接从V中取:
如果使用此属性输入数组公式,则公式必须使用R1C1引用样式,而不是A1引用样式(请参见示例)
更新编辑:
正如您在评论中所述,即使msdn声明您必须使用R1C1
引用A1
引用也有效
代码中的实际问题是:
ValueF = "VALUE(MATCH(1,INDIRECT(ADDRESS(ROW(P3),MATCH(_S_,$A$1:P$1,0))):O3,0))"
您在替换代码中有另一个\u S
,该代码不会更改,因为它已经超过了\u S
。替换
修正:
直接取自:
如果使用此属性输入数组公式,则公式必须使用R1C1引用样式,而不是A1引用样式(请参见示例)
更新编辑:
正如您在评论中所述,即使msdn声明您必须使用R1C1
引用A1
引用也有效
代码中的实际问题是:
ValueF = "VALUE(MATCH(1,INDIRECT(ADDRESS(ROW(P3),MATCH(_S_,$A$1:P$1,0))):O3,0))"
您在替换代码中有另一个\u S
,该代码不会更改,因为它已经超过了\u S
。替换
修正:
谢谢你的评论,不过我已经用一个不同的、更长的公式成功地做到了这一点,在程序的前面,使用A1参考样式。我在这个论坛的其他地方读到,如果公式缩写时没有遵循正确的语法,可能会有问题。我不知道这是否会是问题?@Mac我没有打扰chec国王如果你所做的工作,我的坏。我运行了你的代码,它工作了,但后来我发现实际的错误将更新我的答案。萨缪谢谢你的帮助,我不知道这会花多长时间我注意到!!谢谢你的评论,但是我已经成功地用一个不同的,更长的公式,在A1参考程序的前面ce风格。我在这个论坛的其他地方读到过,如果公式缩写时没有遵循正确的语法,可能会有问题。我不知道这是否会有问题?@Mac我没有费心检查你所做的是否有效,我的错。我运行了你的代码,它有效,但后来我发现实际的错误会更新我的答案。Samu谢谢你r你的帮助,我不知道我会花多长时间注意到!!
ValueF = "VALUE(MATCH(1,INDIRECT(ADDRESS(ROW(P3),MATCH(""START"",$A$1:P$1,0))):O3,0))"