在vba中编写VLOOKUP函数

Mik*_*ike 27 excel vba

我正在尝试使用我的vba代码中的VLOOKUP函数在表数组中的电子表格中查找值.我不知道怎么写得正确.

这是包含所有引用的普通VLOOKUP公式:

=VLOOKUP(DATA!AN2,DATA!AA9:AF20,5,FALSE)
Run Code Online (Sandbox Code Playgroud)

Ben*_*ein 45

你有没有尝试过:

Dim result As String 
Dim sheet As Worksheet 
Set sheet = ActiveWorkbook.Sheets("Data") 
result = Application.WorksheetFunction.VLookup(sheet.Range("AN2"), sheet.Range("AA9:AF20"), 5, False)
Run Code Online (Sandbox Code Playgroud)

  • 如果查找失败,它将抛出一个错误:但是如果你删除"WorksheetFunction"它不会,但你可以使用IsError(结果)测试结果.您需要将结果声明为变体. (11认同)

One*_*ide 17

如何使用:

result = [VLOOKUP(DATA!AN2, DATA!AA9:AF20, 5, FALSE)]
Run Code Online (Sandbox Code Playgroud)

注意[].

  • 以上信息基于这个答案 - > [vba的隐藏功能](http://stackoverflow.com/questions/1070863/hidden-features-of-vba) (4认同)
  • 如果您需要此声明的一部分是动态的,该怎么办?例如,AF20可以是AF99或AF10.通常使用字符串,您可以使用类似:"VLOOKUP(DATA!AN2,DATA!AA9:AF"&lastrow&",5,FALSE)".使用方括号时似乎不起作用. (3认同)
  • @Noah我认为,如果你有一些充满活力的东西,你所接受的答案是你需要的. (3认同)

小智 6

请在下面找到以下代码Vlookup:

Function vlookupVBA(lookupValue, rangeString, colOffset)
vlookupVBA = "#N/A"
On Error Resume Next
Dim table_lookup As range
Set table_lookup = range(rangeString)
vlookupVBA = Application.WorksheetFunction.vlookup(lookupValue, table_lookup, colOffset, False)
End Function
Run Code Online (Sandbox Code Playgroud)