2016-10-11 70 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

檢查循環範圍..它必須是字符串。你用「我」作爲字符串,它應該在那裏作爲變量。