나는'm 력을 조회 값 스프레드시트에서 테이블에서 배열을 사용하여 VLOOKUP 기능에 내 vba 코드입니다. I don't 하는 방법을 알고 올바르게 쓰기.
여기에 정상적인 VLOOKUP 식으로 모든 참:
=VLOOKUP(DATA!AN2,DATA!AA9:AF20,5,FALSE)
찾아주세요 아래 코드는 위해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
로 팀 윌리엄스 suggested](https://stackoverflow.com/questions/5567513/writing-a-vlookup-function-in-vba#comment6340191_5567608)를 사용하여,응용 프로그램입니다.VLookup 는
오류가 발생하지는 경우 조회 가치가 발견되지 않았(와는 달리응용 프로그램입니다.WorksheetFunction.VLookup
).
당신이 원하는 경우 검색을 반환하는 경우 기본값을 찾는데 실패하는 일을 피하기 위해 하드 코딩은 열 번호는 해당의iferror 를(VLOOKUP(무엇을,어디서,칼럼(위치),FALSE),기본값)
수식에서 사용할 수 있습니다 다음과 같은 기능:
Private Function VLookupVBA(what As Variant, lookupRng As Range, defaultValue As Variant) As Variant
Dim rv As Variant: rv = Application.VLookup(what, lookupRng, lookupRng.Columns.Count, False)
If IsError(rv) Then
VLookupVBA = defaultValue
Else
VLookupVBA = rv
End If
End Function
Public Sub UsageExample()
MsgBox VLookupVBA("ValueToFind", ThisWorkbook.Sheets("ReferenceSheet").Range("A:D"), "Not found!")
End Sub
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