我有以下代码段:
For i = 2 To n
Postcode = Cells(i, 3)
Cells(i, "M") = Postcode
On Error Resume Next
EndFrameOutput = Application.WorksheetFunction.VLookup(Postcode, Dealerws3.Range("C3:D" & LastRowDealer), 2, False)
On Error GoTo 0
Cells(i, 4) = EndFrameOutput
Next
结果输出似乎填满应该有N / A的单元格,前一个成功查找了值。
例如: 如果我有这个查找表:
Postcode | x
------------+-------
AB12 3BJ | 1
IV1 1RY | 2
这个搜索数组:
Postcode
----------
AB12 3BJ
BE49 3GK
CG89 6KL
IV1 1RY
ML47 1KK
使用我的代码,返回第2列我得到......
Postcode | Looked up Value
------------+-------------------
AB12 3BJ | 1
BE49 3GK | 1
CG89 6KL | 1
IV1 1RY | 2
ML47 1KK | 2
而不是
Postcode | Looked up Value
------------+--------------------
AB12 3BJ | 1
BE49 3GK | n/a
CG89 6KL | n/a
IV1 1RY | 2
ML47 1KK | n/a
如何调整我的代码?
答案 0 :(得分:0)
使用Application.VLookup
代替Application.WorksheetFunction.VLookup
。后者在未找到查询时抛出应用程序错误。前者返回错误作为结果,然后您可以处理。由于您只想将#N/A
作为输出,因此您无需对其执行任何特殊操作。
摆脱那些On Error
电话。你不需要具有不同功能的它们,但一般来说你应该避免使用它们。
For i = 2 To n
Postcode = Cells(i, 3)
Cells(i, "M") = Postcode
EndFrameOutput = Application.VLookup(Postcode, Dealerws3.Range("C3:D" & LastRowDealer), 2, False)
Cells(i, 4) = EndFrameOutput
Next
这是对这些功能之间差异的一个很好的参考。 http://dailydoseofexcel.com/archives/2004/09/24/the-worksheetfunction-method/