2016-10-11 71 views
0

我一直无法弄清楚我的脚本有什么问题,因为它似乎并不难,所以我希望我能在这里找到答案。Vlookup + Iberror in VBA error“1004”

我有两张纸(Sheet1和Sheet2),其中两张都是随时间变化的列表(Sheet1中的信息每次都在Sheet2中获取)。我想为Sheet1中的每一行运行vlookup函数,并在sheet2中不存在条目时返回“new”(第28列)。

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

由于提前,

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 
+0

正确的语法是Application.WorksheetFunction.IFERROR()等。不知道为什么你要这样做,而不是使用.Range()。Find(),因为它需要更长的时间..此外,如果你试图动态地找到最后一行,如Sheets(1).Cells(Sheets(1).Rows.Count,1).End(xlUp).Row可能会更好。 – Tyeler

回答

3

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

为了修正它:

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

Range需要一个的地址参数(例如,Range("A1")Range("B" & i)等),Cells需要/指数参数(例如Cells(1,2)等)。

+1

不应该是'Cells(i,2)'? – arcadeprecinct

+0

@arcadeprecinct是的,我想是的,谢谢你抓到 –

+0

非常感谢!完美的作品,也感谢这些信息,这对未来肯定有帮助。 – Skudra21

0

检查循环范围..它必须是字符串。你用“我”作为字符串,它应该在那里作为变量。