Application WorksheetFunction VLookup第二个变量

时间:2014-07-27 01:07:49

标签: vba class vlookup worksheet-function

我完全卡住了!以前我使用下面的vlookup VBA来获得我的结果。
例如:

Worksheets("Part Numbers").Cells(i + 1, 2) = _
                "=VLOOKUP(RC[-1],'Supplier'!C[-2]:C[1],3,0) 

我现在需要使用Application Worksheet函数,以便单元格包含结果(数字)而不是函数。以下是我到目前为止的情况:

For i = 3 To LR ' last row 
    LUvalue = Worksheets("Part Numbers").Cells(i + 1, 2)  
    Worksheets("Part Numbers").Cells(i + 1, 3) = _
        Application.WorksheetFunction.VLookup(LUvalue, [Supplier_Range], 3, False)
Next I

In还包含了下面的Error语句,因为我已经读过,如果没有指定,这可能会导致问题:

If IsError(Worksheets("Part Numbers").Cells(i + 1, 3)) Then

    Worksheets("Part Numbers").Cells(i + 1, 3) = "NA"

End If

当我运行此操作时,我收到错误'无法获取工作表函数类的vlookup属性'。当我调试时,我可以看到我的LUValue根本就不对。基本上这应该是我将VLOOKUP放入的单元格左侧的单元格。我也尝试过为我的LUValue使用Offset,但仍然无法使用它。我相信查找价值是我出错的地方,但说实话,我不确定,因为它看起来对我来说都是正确的。

如果有人可以提供一些提示或指导,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

未测试:

Dim sht As WorkSheet, res

Set sht = Worksheets("Part Numbers")

For i = 3 To LR ' last row 
    LUvalue = sht.Cells(i + 1, 2).Value  

    'adjust Supplier range to suit...
    res = Application.Vlookup(LUvalue, _
                              Worksheets("Supplier").Range("A:D"), _
                              3, False)

    sht.Cells(i + 1, 3).Value = Iif(iserror(res),"NA", res)

Next i