안녕하세요?
기존에 올려뒀던 rVLOOKUP 사용자 정의 함수의 버그가 발견되어 수정, 게시합니다.
사용법은 이전과 다르지 않습니다.
파일을 보시면 아시겠지만 vlookup 함수의 단점인 첫번째 출현값만이 아니고 모두를 나타낼 수 있고 기준열보다 왼쪽에 있는 값도 나타낼 수 있습니다.
마지막으로 검색된 여러가지 값을 사용자가 지정한 구분기호로 구분할 수 있습니다.
자세한 내용은 아래 코드와 첨부파일을 참고로...
Option Explicit
'****************************************************************************************
'* Date : 2015-12-01
'* Autohor : 물비늘(윤슬)
'* Purpose : VLOOKUP함수의 단점을 보완, 다중값 가져오기 및 역 VLOOKUP 함수
'* Remark : 4번째 인수 1 = 참조범위에서 해당값의 일치값 전체 나열
' 4번째 인수 0 = 참조범위에서 해당값의 가장 빠른값 표기
' 3번째 인수 -값 + 4번째 인수 1 = VLOOKUP함수와 같이 대응열값을 나타내지만 일치값 전체 나열
'****************************************************************************************
Function rVlookup(c As Variant, _
Rng As Range, _
x As Long, _
Bln As Boolean, _
Optional St As String = ", ") As Variant
Dim i As Long
Dim j As Long
Dim n As Long
Dim VAR()
j = Rng.Columns.Count
If Not Rng Is Nothing And Not IsEmpty(c) And IsNumeric(x) Then
If Rng.Cells(j).Column < x Then
rVlookup = "열번호지정 오류"
Exit Function
End If
For i = j To Rng.Cells.Count Step j
Select Case Bln
Case False
If x > 0 Then
If Rng.Cells(i).Value = c Then
rVlookup = Rng.Cells(i).Offset(, (x - 1) * -1).Value
Exit For
End If
Else
If Rng.Cells(i - Abs(x) + 1).Value = c Then
rVlookup = Rng.Cells(i - Abs(x) + 1).Offset(, Abs(x) - 1).Value
Exit For
End If
End If
Case True
If x < 0 Then
If Rng.Cells(i - j + 1).Value = c Then
n = n + 1
ReDim Preserve VAR(1 To n)
VAR(n) = Rng.Cells(i - j + 1).Offset(, Abs(x) - 1).Value
End If
Else
If Rng.Cells(i).Value = c Then
n = n + 1
ReDim Preserve VAR(1 To n)
VAR(n) = Rng.Cells(i).Offset(, (x - 1) * -1).Value
End If
End If
If n = 1 Then
rVlookup = VAR(n)
Else
rVlookup = Join(VAR, St)
End If
End Select
Next i
Else
rVlookup = ""
End If
End Function
그럼 또...!
=======================================================================================
첨부파일
VLOOKUP_함수_보완_rVLOOKUP_사용자정의함수.xlsm
=======================================================================================
첫댓글 와~
대단하십니다. 이런 자료 꼭 만들어야 할 때가 있는데...
감사합니다...!
언제쯤 이정도 code 를 짤수 있을지 ! 감사 합니다.
가져다 쓰는것으로 만족해야 겠네요 ^^
사용하고 있는데, 너무 좋네요..아주 편하게 잘 쓰고 있습니다. ^^
엑셀 작업 시간을 많이 줄여 주네요
고맙습니다~ 댓글 남길려고 가입했습니다. 유용하게 잘쓰고 있습니다~~~
다들 아실텐데 한가지 팁이라면 마지막 구분자를 줄바꿈 개행문자 char(10) 로 지정하고 셀서식 줄바꿈 하면 더욱 보기가 쉽게 정렬이 됩니다~
제가 잘 모르겠는데 char(10)을 어디에 써야 하는건가요?
도움 부탁드려요. 감사합니다.
@ITX청춘 아~ 마지막에 쓰고 셀서식을 줄바꿈으로 지정해야 되는 거였군요. 감사합니다. 오늘 또 하나 배웠습니다.
와~대단하다는 말 밖에...존경스럽습니다~^^