我正在尝试使用我的vba代码中的VLOOKUP函数在表格数组中的电子表格中查找值。我不知道如何正确书写。在vba中编写VLOOKUP函数
这是正常的VLOOKUP公式的所有引用:
=VLOOKUP(DATA!AN2,DATA!AA9:AF20,5,FALSE)
我正在尝试使用我的vba代码中的VLOOKUP函数在表格数组中的电子表格中查找值。我不知道如何正确书写。在vba中编写VLOOKUP函数
这是正常的VLOOKUP公式的所有引用:
=VLOOKUP(DATA!AN2,DATA!AA9:AF20,5,FALSE)
你试过:
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)
如何只使用:
result = [VLOOKUP(DATA!AN2, DATA!AA9:AF20, 5, FALSE)]
注意[和] 。
以上内容是基于此回答 - > [隐藏功能的vba](http://stackoverflow.com/questions/1070863/hidden-features-of-vba) – Oneide 2011-04-06 16:56:56
+1,谢谢你在这一个线索我。 – 2011-04-06 16:58:17
如果您需要本声明的一部分是动态的,该怎么办?例如,AF20可以是AF99或AF10。通常使用字符串,你可以使用类似于:“VLOOKUP(DATA!AN2,DATA!AA9:AF”&lastrow&“,5,FALSE)”。这在使用方括号时似乎不起作用。 – Noah 2013-07-22 00:30:51
请找到下面的代码为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
这对我来说完美,因为VLOOKUP问题困扰我几个小时。这也适用于在其他表格上查找,感谢分享! – 2016-12-22 06:25:20
Public Function VLOOKUP1(ByVal lookup_value As String, ByVal table_array As Range, ByVal col_index_num As Integer) As String
Dim i As Long
For i = 1 To table_array.Rows.Count
If lookup_value = table_array.Cells(table_array.Row + i - 1, 1) Then
VLOOKUP1 = table_array.Cells(table_array.Row + i - 1, col_index_num)
Exit For
End If
Next i
End Function
Dim found As Integer
found = 0
Dim vTest As Variant
vTest = Application.VLookup(TextBox1.Value, _
Worksheets("Sheet3").Range("A2:A55"), 1, False)
If IsError(vTest) Then
found = 0
MsgBox ("Type Mismatch")
TextBox1.SetFocus
Cancel = True
Exit Sub
Else
TextBox2.Value = Application.VLookup(TextBox1.Value, _
Worksheets("Sheet3").Range("A2:B55"), 2, False)
found = 1
End If
如果查找失败,将抛出一个错误:但是如果你放弃了“WorksheetFunction”不会,但你可以测试使用IsError(结果)的结果。尽管如此,你仍需要声明结果。 – 2011-04-06 21:10:24