【问题标题】:Vlookup + Iferror in VBA error "1004"VBA 错误“1004”中的 Vlookup + Iferror
【发布时间】:2016-10-11 20:27:14
【问题描述】:

我一直无法弄清楚我的脚本有什么问题,因为它似乎一点也不难,所以我希望我能在这里找到答案。

我有两张表(Sheet1 和 Sheet2),其中两张表都是随时间变化的列表(来自 sheet1 的信息每次都会在 sheet2 中传递)。我想为 Sheet1 中的每一行运行 vlookup 函数,如果 sheet2 中不存在该条目,则返回“new”(在第 28 列中)。

代码有问题,因为我一直收到关于 iferror&vlookup 函数的 1004 错误。

提前致谢,

Sub vlookup_iferror ()
 Dim i As Integer
 Dim finalrow As Integer

 finalrow = Sheets("Sheet1").Range("A100000").End(xlUp).Row

  For i = 2 To finalrow
  Cells(i, 28) = Application.IfError(Application.VLookup(Sheets("Sheet1").Range("i, 2"), Sheets("Sheet2").Range("B:B"), 1, False), "New")
  Next i
End sub

【问题讨论】:

  • 正确的语法是 Application.WorksheetFunction.IFERROR() 等。不知道为什么要这样做,而不是使用 .Range().Find(),因为它需要更长的时间.. 还有,如果您尝试动态查找最后一行,则 Sheets(1).Cells(Sheets(1).Rows.Count, 1).End(xlUp).Row 可能会更好。

标签: excel vba vlookup


【解决方案1】:

您收到 1004,因为 Sheets("Sheet1").Range("i, 2") 是无效的范围分配。

修复它:

Range("i, 2") 应该是Cells(i, 2)

Range 采用 address 参数(例如,Range("A1")Range("B" & i) 等),Cells 采用 row/column 索引参数(例如,Cells(1,2) 等)。

【讨论】:

  • 不应该是Cells(i, 2)吗?
  • @arcadeprecinct 是的,我想是的,感谢您了解这一点
  • 非常感谢!完美运行,也感谢您提供的信息,它肯定会在未来有所帮助。
【解决方案2】:

检查循环中的范围..它必须是字符串。你使用“i”作为字符串,它应该作为变量存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多