Excel Vlookup+;“VBA错误中的Iferror”;1004“;
我还没能找出我的脚本有什么问题,因为它似乎一点也不难,所以我希望我能在这里找到答案 我有两张表(Sheet1和Sheet2),其中都是随时间变化的列表(Sheet1中的信息每次都会在Sheet2中传递)。我想对Sheet1中的每一行运行vlookup函数,如果sheet2中不存在条目,则返回“new”(在第28列中) 代码有点不对劲,因为关于iferror&vlookup函数,我一直遇到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
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的方法可能会更好。