VLOOKUP 함수를 이용하여 두 개의 조건을 줘서 사용하고 싶은데, 찾을 수가 없었다.

그래서 구글에서 검색한 결과 index와 match 함수를 사용하는 것이다.

match 함수는 조건을 만족하는 위치를 찾는 것이고, index는 그 위치의 값을 불려오는 것이다.

match(조건 값1, 조건값1의 범위-절대경로, 옵션=0)
match(조건 값2, 조건값2의 범위- 절대 경로, 옵션=0)
두개를 함께하기 위해서는 & 기호가 필요하다. and 옵션인가??
match(조건값1 & 조건값2, 조건값1의 범위 & 조건값2의 범위, 옵션=0)

index 함수는 값을 반한해준다.
index (찾고자 하는 값의 범위, 위치) 이다.

한 번 따라해보면 금방 이해하였다..



   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번 행) 도 제대로 값이 채워진다.
출처 : http://adnoctum.tistory.com/375
출처에 출처: http://blog.naver.com/PostView.nhn?blogId=5guns&logNo=125095090

Posted by 노을지기

댓글을 달아 주세요