Excel Vlookup+;“VBA错误中的Iferror”;1004“;

Excel Vlookup+;“VBA错误中的Iferror”;1004“;,excel,vba,vlookup,Excel,Vba,Vlookup,我还没能找出我的脚本有什么问题,因为它似乎一点也不难,所以我希望我能在这里找到答案 我有两张表(Sheet1和Sheet2),其中都是随时间变化的列表(Sheet1中的信息每次都会在Sheet2中传递)。我想对Sheet1中的每一行运行vlookup函数,如果sheet2中不存在条目,则返回“new”(在第28列中) 代码有点不对劲,因为关于iferror&vlookup函数,我一直遇到1004个错误 提前感谢, Sub vlookup_iferror () Dim i As Integer

我还没能找出我的脚本有什么问题,因为它似乎一点也不难,所以我希望我能在这里找到答案

我有两张表(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

您得到的是1004,因为
Sheets(“Sheet1”)。范围(“i,2”)
是无效的范围分配

要解决此问题,请执行以下操作:

范围(“i,2”)
应该是
单元格(i,2)


Range
采用地址参数(例如
Range(“A1”)
Range(“B”&i)
,等等),
Cells
采用行/列索引参数(例如
Cells(1,2)
,等等)。您得到的是1004,因为
工作表(“Sheet1”)。Range(“i,2”)
是无效的范围分配

要解决此问题,请执行以下操作:

范围(“i,2”)
应该是
单元格(i,2)


范围
采用地址参数(例如
范围(“A1”)
范围(“B”&i)
等),
单元格
采用行/列索引参数(例如
单元格(1,2)
等)。

检查循环中的范围。。一定是绳子。使用“i”作为字符串,它应该作为变量存在。

检查循环中的范围。。一定是绳子。如果使用“i”作为字符串,它应该作为变量存在。

它不应该是
单元格(i,2)
?@arcadeprecinct是的,我想是的,谢谢你抓住了它。非常感谢!非常好用,也非常感谢您提供的信息,它在将来肯定会有所帮助。它不应该是
单元格(i,2)
?@arcadeprecinct是的,我想是的,谢谢您捕捉到这些信息。非常感谢!非常好地工作,也感谢您提供的信息,它在将来肯定会有帮助。正确的语法是Application.WorksheetFunction.IFERROR()等。不确定为什么要这样做,而不是使用.Range().Find(),因为这需要更长的时间。。此外,如果您试图动态查找最后一行,则类似于Sheets(1).Cells(Sheets(1).Rows.Count,1).End(xlUp).row的功能可能会更好。正确的语法是Application.WorksheetFunction.IFERROR()等。不确定为什么要这样做,而不是使用.Range().find(),因为这需要更长的时间。。另外,如果您试图动态查找最后一行,则类似于Sheets(1).Cells(Sheets(1).Rows.Count,1).End(xlUp).row的方法可能会更好。