VBA에서 vlookup 기능을 복사하려고 할 때 내가 생각해 낼 수 있는 최선의 방법은 다음과 같습니다.
Function VBALOOKUP(LUcell As Variant, LUArray As Range, LUColi As Long, OutColi As Long) As Variant
Dim Y() As Variant
Dim X As Long
'cycle through each cell in range and check if = to lookup cell then return value with same index in outcol
Y = LUArray
For X = LBound(Y) To UBound(Y)
If LUcell = Y(X, LUColi) Then
VBALOOKUP = Y(X, OutColi)
Exit For
End If
Next X
Erase Y
End Function
작동하지만 엄청나게 느립니다(워크시트 기능보다 약 100배 느림).
속도를 높이는 방법은 조회 배열을 알파벳순으로 정렬하고 어떻게든 목록의 나중 지점으로 이동하는 것일 수 있습니다. 여기에는 전문 지식이 없지만 각 개별 셀을 살펴보고 조회 값과 같은지 확인한 후 다음 셀로 이동하는 것이 가장 효율적인 방법이 아니며 그럴 수도 없는 것 같습니다. 실제 vlookup 기능이 작동하는 방식.
"vlookup을 사용하면 안 되는 이유"가 궁금하다면 VBA에서 한 지점에서 vlookup과 유사한 작업을 수행하는 스크립트를 작성하고 있습니다(특정 상황은 좀 더 복잡하고 1이 아닌 여러 값을 반환하지만). . 나는 Stackexchange에게 내 코드 전체를 작성해 달라고 요청하는 대신 문제의 핵심에 접근할 수 있다고 생각했습니다. 게다가, 나는 이 질문이 나의 특정 업무에 관한 것보다 더 많은 사람들이 나중에 참고할 때 도움이 될 것이라고 믿습니다.