본문 바로가기
컴퓨터/엑셀관련

여러 조건을 만족하는 위치의 값을 구해오기

by adnoctum 2010. 9. 5.

   VLOOKUP 함수로는 한 조건을 만족하는 행의 다른 열의 값을 가져올 수 있다. 하지만 이 함수로는 여러 조건을 동시에 만족시키는 행을 찾은 후, 그 행의 다른 열의 값을 가져오는 것을 할 수는 없다. 이 경우 두가지 함수를 조합하여 원하는 일을 할 수 있다.

   방법은 INDEX 와 MATCH 함수를 이용하는 것이다. INDEX는, 구간, 행, 열, 이 주어지면 주어진 구간에서 주어진 행/열의 값을 반환해 준다. MATCH 주어진 열에서, 주어진 조건에 만족하는 칸(cell)의 위치를 반환[각주:1]한다. 핵심은 MATCH의 경우 조건을 여러 개 줄 수 있다는 것이다. 예를 보자.



MATCH(A13&B13, $B$2:$B$9&$A$2:$A$9,0) 을 살펴 보면,
MATCH(A13&B13, $B$2:$B$9&$A$2:$A$9,0) A13 은 첫 번째 조건값으로, "Almonds"의 값을 찾을 것이다.
MATCH(A13&B13, $B$2:$B$9&$A$2:$A$9,0) B13 은 두 번째 조건값으로, 1 의 값을 찾을 것이다.
MATCH(A13&B13, $B$2:$B$9&$A$2:$A$9,0) 첫 번째 조건값을 찾을 구간이다. 첫 번째 조건값이었던 A13, 즉, "Almonds"를 이 구간에서 찾는다.
MATCH(A13&B13, $B$2:$B$9&$A$2:$A$9,0) 두 번째 조건값을 찾을 구간이다. 두 번째 조건값이었던 B13, 즉 1 를 이 구간에서 찾는다.
MATCH(A13&B13, $B$2:$B$9&$A$2:$A$9,0) 값을 찾는 방법을 지정한다. '정확히 일치'하는 값을 찾을 때는 0 을 써준다.


위처럼 하면 조건에 만족되는 "위치"가 반환된다. 값이 아니다. 이 "위치"를 INDEX 와 함께 이용한다. INDEX 함수는, 예를 들면,
INDEX(A1:B10, 3,1) 을 하면 A1:B10 에서 3번째 '행(row)', 1번째 '열(column)'을 반환한다. 이 때, "3,1" 이 위치가 되는 것이고, 우리는 이 위치값에 MATCH로 반환된 위치를 집어 넣으면 되는 것이다. 따라서,

INDEX($C$2:$C$9, (위치) ) 는,
INDEX($C$2:$C$9, (위치) ) C2:C9 을 구간으로 설정한다. 위의 경우 '당도'를 최종값으로 잡을 것인데, 이 값이 C열의 2~9 행에 있으므로 이렇게 한다.
INDEX($C$2:$C$9, (위치) ) 위치는 MATCH가 반환해 준 값을 사용하면 되므로, 최종적으로

INDEX($C$2:$C$9,MATCH(A13&B13,$B$2:$B$9&$A$2:$A$9,0))

가 된다. 여기서 중요한 것은, 위의 경우 위처럼 값을 입력하고 나면 제대로 값이 나오지 않는다.

위처럼 에러가 난다. 다시 저 칸을 클릭하고, 값을 변경하는 단축키 F2를 누른 후, Ctrl+Shift+Enter 키를 누르면 값이 제대로 나온다. 이렇게 값이 제대로 나온 후 마우스 끌기나 복사를 해야 나머지 값들 (위의 경우 C열 14번 행) 도 제대로 값이 채워진다.





    이 글은 VLOOKUP 함수에 대한 글에 있는 답글 때문에 작성합니다. 이 답글을 보기 전까지는 위와 같은 역할을 하는 함수를 사용할 필요가 없었기 때문에 INDEX 나 MATCH 같은 함수를 사용해 본 적은 없었습니다. 하지만 이와 같은 기능이 필요한 것을 느낀 후, 배워볼만한 프로그램들 1번에 썼던 것처럼 곧바로 구글링 들어갔습니다.


"여러 조건에 대한 vlookup"을 찾고자 대충 어림짐작으로 multiple criteria 만 써 넣으니 구글의 자동완성에서 원하는 것이 정확히 보이는군요. :)  그리고, 역시나, 검색결과의 1페이지 내에서 모든 것은 끝났습니다. 역시 구글...


  1. 그 위치의 '값'을 반환해 주는 것이 아니다. vlookup 함수는 '값'을 반환해 주었다. [본문으로]