将公式应用于VBA中的Range.FormulaR1C1时的运行时错误“1004”

时间:2015-02-11 23:49:16

标签: excel vba excel-vba

我尝试使用下面的代码将大嵌套公式应用于范围。基本上,如果活动行的单元格A中的值存在于另一个工作簿的A列中,并且活动行的E列中的单元格不为空,我希望活动单元格显示单元格以显示该值的值单独工作簿中的等效单元格。

这需要应用于多个工作表,因此我使用变量lrowint与工作簿#1中活动工作表的最后一行)和{{ 1}}(等于工作簿#2中活动工作表的最后一行的tlrow)。当我单步执行sub时,这些变量都会返回我期望它们的数字。

同样,这是在for循环中,所以我也使用int Worksheets(i).NameI

当我运行代码时,我得到运行时错误"' 1004':应用程序定义或对象定义的错误"。

我认为这是一个语法问题。

代码:

int

3 个答案:

答案 0 :(得分:0)

尝试使用:

Range("B15:B" & lrow).FormulaR1C1 = _
    "=IF(OR(RC1="""",RC5=""""),"""",IF(ISERROR(VLOOKUP(RC1," & _
    Worksheets(i).Range("A1:D" & lrow).Address(ReferenceStyle:=xlR1C1, External:=True) & _
    ",3,FALSE)),""0"",VLOOKUP(RC1," & _
    Worksheets(i)..Range("A1:D" & tlrow).Address(ReferenceStyle:=xlR1C1, External:=True) & _
    ",3,FALSE)))"

答案 1 :(得分:0)

您运行的是什么版本的Excel?在更新的版本中,您可以使用此公式中的Iferror函数来真正缩小大小。

这将是这样的:

Range("B15:B" & lrow).FormulaR1C1 = _
"=IF(OR(RC1="""",RC5=""""),"""",IFERROR(VLOOKUP(RC1," & " & Worksheets(i).Range("A1:D" & _
tlrow).Address(ReferenceStyle:=xlR1C1, External:=True) & ",3,0),""0"")"

答案 2 :(得分:0)

感谢您的帮助。我能够通过在Range变量中定义我的vlookup范围,然后在L42' s等式中输入变量名来代替

来解决问题
 worksheets(i).Range("A1:D" & lrow)

真的回应了这些回复!再次感谢。