首页 文章

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

提问于
浏览
1

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

这需要应用于几个工作表,所以我使用变量 lrow (这是一个 int 与工作簿#1中活动工作表的最后一行)和 tlrow (这是一个 int 等于活动工作表的最后一行)在工作簿#2) . 当我单步执行sub时,这些变量都会返回我期望它们的数字 .

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

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

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

Code:

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

3 回答

  • 0

    谢谢你的帮助 . 我能够通过在Range变量中定义我的vlookup范围然后在L42的等式中输入变量名来代替

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

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

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

相关问题