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

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

这需要应用到几个工作表,所以我使用variableslrow (这是工作簿#1中的活动工作表的最后一行的int )和tlrow (这是一个int等于活动工作表的最后一行在工作手册#2中)。 当我遍历子时,这些variables都返回我期望他们的数字。

同样,这是一个for循环,所以我也使用Worksheets(i).Name I是一个int

当我运行代码时,出现运行时错误“'1004':应用程序定义或对象定义的错误”。

我假设这是一个语法问题。

码:

 Range("B15:B" & lrow).FormulaR1C1 = _ "=IF(OR(RC1="""",RC5=""""),"""",IF(ISERROR(VLOOKUP(RC1,'[temp.xlsx]" & _ Worksheets(i).Name & _ "'!A15:D" & tlrow & ",3,FALSE)),""0"",VLOOKUP(RC1,'[temp.xlsx]" & _ Worksheets(i).Name & "'!A15:D" & tlrow & ",3,FALSE))))" 

尝试使用这个:

 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)))" 

你正在运行什么版本的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"")" 

谢谢你的帮助。 我能够通过在Rangevariables中定义我的vlookup范围,然后在L42的等式中inputvariables名来解决这个问题。

  worksheets(i).Range("A1:D" & lrow) 

真的apprecaite的反应! 再次感谢。