Excel formula excel公式数组
嗨,为什么会出现运行时错误13:类型不匹配错误 在运行以下代码时Excel formula excel公式数组,excel-formula,excel-2007,excel,vba,Excel Formula,Excel 2007,Excel,Vba,嗨,为什么会出现运行时错误13:类型不匹配错误 在运行以下代码时 Application.Goto Reference:="R1C1:R232C221" Selection.FormulaArray = "=ROUND(a(),0)" Selection.Replace What:="a()", Replacement:="IF(IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0," & _ "Sheet4!A1:HM232+Sheet5!A1:HM232
Application.Goto Reference:="R1C1:R232C221"
Selection.FormulaArray = "=ROUND(a(),0)"
Selection.Replace What:="a()", Replacement:="IF(IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0," & _
"Sheet4!A1:HM232+Sheet5!A1:HM232)+IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0," & _
"Sheet4!A1:HM232+Sheet5!A1:HM232)=2,0,IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0," & _
"Sheet4!A1:HM232+Sheet5!A1:HM232)+IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0,Sheet4!A1:HM232+Sheet5!A1:HM232))", LookAt _
:=xlPart, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
Range("I9").Select
1) 我知道formulaarray应该是R1C1样式的。。。但是A1样式不是必需的,它在A1样式中也可以正常工作
http://msdn.microsoft.com/en-us/library/bb208529.aspx
2) 我是从一开始就发现这种写作方式的
http://www.dailydoseofexcel.com/archives/2005/01/10/entering-long-array-formulas-in-vba/
我认为“替换”的论据太长了。您需要将该字符串保持在255个字符以下。将更多公式放入Selection.FormulaArray行中,以使替换内容少于255个字符。我认为“替换”参数太长。您需要将该字符串保持在255个字符以下。将更多公式放入Selection.FormulaArray行,使替换内容少于255个字符。让我们分析一下您的替换内容:
Replacement:="IF(IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0," & _
"Sheet4!A1:HM232+Sheet5!A1:HM232)+IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0," & _
"Sheet4!A1:HM232+Sheet5!A1:HM232)=2,0,IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0," & _
"Sheet4!A1:HM232+Sheet5!A1:HM232)+IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0,Sheet4!A1:HM232+Sheet5!A1:HM232))"
(1) 更改Sheet4!A1:HM232+Sheet5!A1:HM232
至X
:
Replacement:="IF(IF(X=2,0," & _
"X)+IF(X=2,0," & _
"X)=2,0,IF(X=2,0," & _
"X)+IF(X=2,0,X))"
(2) 将碎片粘在一起:
Replacement:="IF(IF(X=2,0,X)+IF(X=2,0,X)=2,0,IF(X=2,0,X)+IF(X=2,0,X))"
(3) 如果(X=2,0,X)更改为Y
:
Replacement:="IF(Y+Y=2,0,Y+Y)"
(4) 一些评价:
- 如果X为2,Y为0,结果为0
- 如果X是1,Y是1,结果是 0
- 如果X是其他的,Y是X 结果是2*X
Replacement:="IF(OR(X=2,X=1),0,2*X)"
(6) 因此,下一步将是替换X(步骤1相反)
我只想留给你们一两个问题:它怎么会变得如此混乱?你听说过“干”(不要重复你自己)吗?让我们分析一下你的替代品:
Replacement:="IF(IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0," & _
"Sheet4!A1:HM232+Sheet5!A1:HM232)+IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0," & _
"Sheet4!A1:HM232+Sheet5!A1:HM232)=2,0,IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0," & _
"Sheet4!A1:HM232+Sheet5!A1:HM232)+IF(Sheet4!A1:HM232+Sheet5!A1:HM232=2,0,Sheet4!A1:HM232+Sheet5!A1:HM232))"
(1) 更改Sheet4!A1:HM232+Sheet5!A1:HM232
至X
:
Replacement:="IF(IF(X=2,0," & _
"X)+IF(X=2,0," & _
"X)=2,0,IF(X=2,0," & _
"X)+IF(X=2,0,X))"
(2) 将碎片粘在一起:
Replacement:="IF(IF(X=2,0,X)+IF(X=2,0,X)=2,0,IF(X=2,0,X)+IF(X=2,0,X))"
(3) 如果(X=2,0,X)更改为Y
:
Replacement:="IF(Y+Y=2,0,Y+Y)"
(4) 一些评价:
- 如果X为2,Y为0,结果为0
- 如果X是1,Y是1,结果是 0
- 如果X是其他的,Y是X 结果是2*X
Replacement:="IF(OR(X=2,X=1),0,2*X)"
(6) 因此,下一步将是替换X(步骤1相反)
我只想留给你们一两个问题:它怎么会变得如此混乱?你听说过“干”(不要重复你自己)吗