首页 > 解决方案 > 两张纸的Vlookup

问题描述

我需要在 VBA 中为工作表“Page1_1”中的值编写 vlook up 代码,并用来自“Sheet1”列“R”17 的值填充 G 列。到目前为止,我有以下内容,但它给出了:

无法获取工作表函数类的 v 查找属性:

Function vlookupVBA()
vlookupVBA = "#N/A"
    Set ws = Sheets("Page1_1")
Set sh = Sheets("Sheet1")
    LastRow = ws.Cells(Rows.Count, "G").End(xlUp).Row
    Set TargetRange = sh.Range("R2:G" & LastRow)
On Error Resume Next
  result = Application.WorksheetFunction.VLookup(Worksheets("Page1_1").Range("G2"), TargetRange, 17, False)

 End Function

标签: excelvbavlookup

解决方案


问题是您的列参考号。您要求 vlookup 从第 17 列获取数据,但您的 TargetRange 没有 17 列。

TargetRange = sh.Range("R2:G" & LastRow)

从 G 列到 R 列有 12 列。我假设您想从 Q 列中获取答案,这将是您范围的第 11 列。因此

result = Application.WorksheetFunction.VLookup(Worksheets("Page1_1").Range("G2"), TargetRange, 11, False)

应该管用。

附言。您还可以以更直观的方式重写 TargetRange:

TargetRange = sh.Range("G2:R" & LastRow)

pps。我鼓励您改用以下Index/Match组合:Excel - VLOOKUP 与 INDEX/MATCH - 哪个更好?


推荐阅读