반응형
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)]
[ ] 및 [ ]에 주의해 주세요.
다음에 대한 코드를 찾으십시오.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
팀 윌리엄스가 제안했듯이Application.VLookup
검색 값을 찾을 수 없는 경우 오류를 발생시키지 않습니다(와 달리).Application.WorksheetFunction.VLookup
).
검색에서 일치하는 항목을 찾지 못할 때 기본값을 반환하고 열 번호를 하드 코딩하지 않으려면 다음과 같습니다.IFERROR(VLOOKUP(what, where, COLUMNS(where), FALSE), default)
공식에서는 다음 함수를 사용할 수 있습니다.
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
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
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
언급URL : https://stackoverflow.com/questions/5567513/writing-a-vlookup-function-in-vba
반응형
'source' 카테고리의 다른 글
오브젝트 유형에 따른 WPF 트리거 (0) | 2023.04.24 |
---|---|
함수를 호출하는 Excel 셀 (0) | 2023.04.24 |
Bash 스크립트에서 중복 항목 제거 (0) | 2023.04.24 |
ARC와 호환되는 Objective-C 싱글톤을 구현하려면 어떻게 해야 하나요? (0) | 2023.04.24 |
FormBuilder 컨트롤의 수동 값 설정 (0) | 2023.04.24 |