엑셀 vlookup 다중 조건에 맞는 값 가져오는 방법

2024. 4. 24. 23:16 / 서기랑

 엑셀은 vlookup 함수는 범위에서 조건에 맞는 값을 찾아 찾은 값과 같은 행 값을 가져올 수 있다.

 하지만 찾을 수 있는 값은 하나만 지정할 수 있기 때문에 여러 개의 값을 찾아야 하는 다중 조건 상황에서는 vlookup 함수로는 찾을 수 없는데 이런 경우에는 약간의 꼼수를 사용하거나 다른 함수를 사용하여 값을 가져와야 한다.

 

엑셀 vlookup 다중 조건에 맞는 값 가져오는 방법

1. 임시 셀을 만들어서 찾기.

 찾아야 하는 값이 여러 개라면 해당 값의 내용을 모두 합친 셀을 만들고 해당 셀을 찾는 방식의 꼼수를 사용할 수 있다.

 vlookup 함수는 하나의 값을 찾을 수 있는데 조건을 입력하는 것이 아닌 셀이나 값을 지정하는 방식이기 때문에 이를 활용한 꼼수라고 볼 수 있다.

 

 방법 자체는 간단하다.

 예를들어 찾아야 하는 값이 A1과 B1셀 두 셀에 있는 경우를 가정해 보자.

 

 먼저 vlookup 함수에서 찾을 범위로 지정할 셀, 여기서는 A1 앞에 새 열을 추가하자.

 열을 추가했다면 전체적으로 오른쪽으로 밀리게 되니 A1에 '=B1&C1'과 같은 수식을 넣어 두 열의 값을 합친다.

 (범위 왼쪽에 빈 셀이 있다면 꼭 열을 추가할 필요는 없다)

엑셀 vlookup 열 추가하기

 값을 합쳤다면 이제 해당 값을 기준으로 vlookup 함수 수식을 작성하면 된다.

 기본적인 수식은 거의 같지만 범위에서 값을 합친 임시 셀을 기준으로 찾아야 하니 찾을 값 역시 새 열을 만들어서 합쳐도 되고 수식에 & 연산자를 사용하여 합쳐도 된다.

 아래와 같은 형식으로 수식을 작성하면 된다.

=VLOOKUP(찾을 값, 찾을 범위, 가져올 행 값, 일치 여부)
=VLOOKUP(F1&G1, A1:D4, 4, 0)

추가한 열을 기준으로 vlookup 함수 수식 작성

2. FILTER 함수 사용하기.

 엑셀이 최신 버전이라면 꼭 vlookup 함수를 고집할 필요는 없으며 filter 함수를 사용하면 간단하게 원하는 값을 가져올 수 있다.

 

 filter 함수는 아래와 같은 방식으로 사용이 가능하며 단순히 같은 값을 찾는 것 외에도 다양한 조건을 넣을 수 있다.

 vlookup 함수와는 값과 범위를 지정하는 방식이 다르니 잘 보고 수식을 작성하자.

=IFERROR(FILTER(가져올 값의 범위, (조건1) * (조건2) * ... ), "-")
=IFERROR(FILTER(C1:C4, (A1:A4=E1) * (B1:B4=F1)), "-")

엑셀 filter 함수 수식

3. INDEX와 MATCH 함수 사용하기.

 구버전 엑셀이라면 filter 함수를 사용할 수 없다.

 하지만 범위에서 다중 조건에 맞는 값을 가져오기 위한 방법은 예전부터 고민하던 문제다 보니 사람들은 vlookup 함수 대신 index와 match 함수를 사용하여 이를 해결하기도 했다.

 

 index와 match 함수는 아래와 같은 방식으로 수식을 작성할 수 있는데 배열 수식이기 때문에 수식 입력 후 [Ctrl + Shift + Enter]을 눌러야 한다.

{=INDEX(가져올 값의 범위, MATCH(1, (조건1) * (조건2) *..., 0))}
{=INDEX(C1:C4, MATCH(1, (A1:A4=E1) * (B1:B4=F1), 0))}

엑셀 vlookup 함수 대신 index, match 함수 사용

 

그 외 내용

 상황에 따라서 다르겠지만 가능하다면 filter 함수를 사용하는 것이 여러모로 편하지 않을까 한다.

 그렇지 않다면 index와 match 함수를 사용하는 것이 무난하긴 하지만 배열 함수이기 때문에 엑셀에 값이 많다면 속도가 느려질 수 있다.

 때문에 임시 셀을 추가해서 vlookup 함수를 사용하는 방법도 고려해봐야 할 수도 있다.

 

 filter 함수와 index, match 함수와 관련된 자세한 설명이 필요하다면 아래의 글이 도움이 되지 않을까 한다.

엑셀 두 가지 이상 다중 조건 값 가져오기(index, match)

엑셀 다중 조건에 맞는 특정 값 가져오기(if, filter)