엑셀/엑셀 함수

[엑셀함수] V/Hlookup의 Next Level, XLOOKUP함수

엑셀도우미 2022. 3. 21. 01:04


어떤 표에서 내가 찾고자 하는, 원하는 위치에 있는 데이터를 불러오는 함수가 바로, VLOOKUP / HLOOKUP 이 있었습니다.

※ V/HLOOKUP 함수의 자세한 사용법은 이전 글을 참고해주세요!


내가 찾으려는 데이터가 있긴 한데, VLOOKUP으로도, HLOOKUP으로도 원하는 걸 얻지 못할 때가 있어요.

예시를 한번 볼게요.

[출처] 대한상공회의소 컴퓨터활용능력 연습문제 中


위처럼 데이터가 중복되는 경우죠.
내가 원하는 데이터는 2번째의 이다정 학생의 출석 점수만을 원해요.(억지 같지만 실제로 빈번하게 있는 경우랍니다!)

학생 이름이 중복되지만 않았더라면 VLOOKUP함수로 아주 간단하게 출석 점수를 얻을 수가 있죠.

[출처] 대한상공회의소 컴퓨터활용능력 연습문제 中


이렇게 말이죠!
13행에 있는 이다정 학생의 이름을 잠시 바꿔서 수식계산을 해보았어요.
사용한 함수를 한번 말로써 해석해볼까요?

더보기
=VLOOKUP("이다정", A3:G18,6)

이다정이라는 단어를 A3:G18의 범위에서 찾은 다음, 6번째 열에 있는 내용을 반환하세요.


하지만 여기서 VLOOKUP 함수가 가진 한계가 있어요. 바로 "이다정"이라는 단어가 2개, 3개, 여러 개가 있을 때에도 무조건 첫 번째 찾은 것만 가져온다는 거예요.

다시 데이터를 원래로 되돌려놓고 계산을 해볼게요.

[출처] 대한상공회의소 컴퓨터활용능력 연습문제 中


수식은 그대로인데 결괏값이 바뀌어버렸어요.

예시의 테이블은 간단하기 때문에 잘못되었다는 것을 알아차릴 수 있지만, 우리가 실무에서 사용하는 엑셀표는 너무나도 많은 데이터를 담고 있기 때문에 틀렸다는 사실을 알아차리지 못하고, 또 그로 인해 많은 수식들이 어긋나는 등의 치명적인 실수가 될 수 있어요.

이럴 때는 어떻게 해결해야 할까요? IF문을 이용하여, "이다정" 단어가 2개일 때 더 아래쪽에 있는 행을 찾아서 6번째 열의 점수를 가져오고...........

생각만 해도 수식이 복잡해질 것 같네요.



이런 문제를 해결하기 위하여 새로 추가된 함수입니다.


너무나 소중한 XLOOKUP 함수입니다.

V&HLookup의 인수는 3개인 데에 비해 XLOOKUP의 인수는 무려 6가지나 됩니다.

인수를 넣어봅니다.

함수 인수의 이름들에 조금 익숙해질 필요가 있습니다.

더보기

=XLOOKUP("이다정",A3:A18,F3:F18)

"이다정"이라는 값을 A3:A18 범위 내에서 찾아서 F3:F18 범위 내에 같은 위치에 있는 값은 반환하세요.


여기까지는 위의 VLOOKUP 함수와 비슷합니다.
다만 검색범위와 반환하는 방법이 다를 뿐이네요. 그런데 XLOOKUP함수는 선택 인수, 그러니까 써도 되고 안 써도 되는 [ ] 대괄호 안의 인수가 3개가 추가로 있습니다.

함수 인수 설명 특징
Lookup_value 검색할 값 필수(그러나 생략하면 빈 셀을 찾음)
Lookup_array 검색할 배열 또는 범위 필수
Return_array 반환할 배열 또는 범위 필수
[If_not_found] 유효한 일치를 찾을 수 없는 경우에 나타내는 텍스트 선택
(공백으로 둘 경우 #N/A가 표시)
[Match_mode] 일치 유형을 지정 0 : 정확한 일치, 없는 경우 #N/A 선택
(기본값은 0)
-1 : 정확한 일치, 없는 경우 그 다음 작은 항목
1 : 정확한 일치, 없는 경우 다음 큰 항목
2 : 와일드카드 일치*
[Search_mode] 검색모드 1 : 첫번째 항목부터 검색 선택
(기본값은 1)
-1 : 마지막 항목부터 역방향 검색
2 : 오차도 순서로 정렬되는 lookup_array 이진 검색
-2 : 내선 순서로 정렬되는 lookup_array 이진 검색

V/HLOOKUP 에서 아쉬웠던 부분을 채워줄 Optional 인수들입니다.
이 숨은 인수들도 해석을 해볼게요.

더보기

=XLOOKUP("이다정",A3:A18,F3:F18)

"이다정"이라는 값을 A3:A18 범위 내에서 찾아서 F3:F18 범위 내에 같은 위치에 있는 값은 반환하세요.

[만약에 값을 못 찾았을 땐 #N/A로 표시하고], [완전히 똑같은 값만 검색하고], [표의 첫번째 항목부터 검색하세요.]

수식은 바뀌지 않았지만 사실은 저런 명령들이 숨어있었던 거예요.

대체로 이렇게 사용을 많이 하니까 기본값으로 둔 것인데, 또 많은 경우에 다른 방법으로도 사용을 하게 되니 쓰는 사람이 필요할 때 쓰라고 사용자에게 선택의 권한을 준 것이죠.


자, 다시 데이터를 볼게요.

[출처] 대한상공회의소 컴퓨터활용능력 연습문제 中


우리는 어쨌든 2번째 "이다정"의 데이터가 필요하고, VLOOKUP과 기본 XLOOKUP 함수는 위 → 아래로 검색하는 것이 기본이니, 우리는 아래 → 위로, 역방향 검색을 하면 원하는 데이터를 찾을 수 있겠죠?

[If_not_found]도 선택 값이라 굳이 쓰지 않아도 되지만, 찾는 값이 없을 때 셀에 #N/A라고 뜨는 게 저는 왠지 거슬리더라고요. (개인 의견)

거슬려....

그래서 [만약 찾는 값이 없을 때는 "해당 없음"이라고 표시해라]는 명령을 4번째 인수에 넣었고
5번째 인수 [match_mode]는 어차피 정확하게 일치하는 데이터를 찾을 것이니 공백으로 두었어요.
쉼표가 2개가 있는 것처럼 보이지만 사실은 인수와 인수 사이에 공백이 있는 것이랍니다.

더보기
=XLOOKUP("이다정",A3:A18,F3:F18,"해당없음",,-1) 

"이다정"이라는 값을 A3:A18 범위 내에서 찾아서 F3:F18 범위 내에 같은 위치에 있는 값은 반환하세요. 만약에 값을 못 찾았을 땐 "해당없음"로 표시하고, [완전히 똑같은 값만 검색하고], 표의 마지막 항목부터 검색하세요.


위와 같은 의미의 수식이 만들어진 것입니다.

이 XLOOKUP 함수는 엑셀 프로그램이 업데이트되면서 새로 생긴 함수입니다.
지금까지는 위와 같은 선택 인수가 없어서 원하는 값을 추출하려면 너무 많은 함수들이 중첩되어야만 했어요.

V/Hlookup 뿐만 아니라 Index-match 같은 값을 검색하는 함수들의 고질적인 문제점은 무조건 1번 행부터, 위에서부터 검색한다는 것이 문제였습니다.

이 지독한 단점을 깨끗하게 해결해준 Xlookup입니다.

그래서 저는 Vlookup과 Xlookup을 구분해서 쓰지 않고, Xlookup을 더 자주 사용하게 되었습니다. 이 두 함수는 Vlookup ⊂ Xlookup 부분집합의 관계니까요!


그럼, 혹시 같은 값이 3개일 때는 어떻게 검색을 해야 할까요...?

우리가 해결해야 할 숙제네요ㅎㅎ

XLOOKUP 함수, 많이 활용해보시고 궁금한 점 있으면 댓글 달아주시기 바랍니다.

728x90