엑셀 index match 함수를 같이 사용해 보자

2018. 5. 26. 19:30 / 서기랑

 index와 match함수는 단독으로 사용하는 경우보다 같이 사용하는 경우가 많다.

 보통 index 함수 안에 match 함수를 사용하는 식인데 사용한 결과는 lookup 함수와 비슷하며 수식의 길이도 길기 때문에 lookup 함수를 사용하는 것이 편하지만 상황에 따라서 looup 함수에서 할 수 없는 부분을 index와 match함수는 할 수 있기 때문에 알아두면 좋다.


엑셀 index match 함수

 우선 두 함수의 기본은 아래와 같으며 각 함수의 사용 방법은 링크를 참고하길 바란다.(index 함수, match 함수)

 =index(arrayrow_num[column_num])

 =match(lookup_value, lookup_array, [match_type])


 그리고 두 함수를 같이 사용하는 경우는 아래와 같은데 index의 row_num혹은 [column_num] 부분에 match함수를 사용한다고 보면 된다.

 =index(array, match(...), match(...))

엑셀 index match 함수 기본


 이렇게 사용이 가능한 이유는 간단한데 index의 num 부분은 array에서 지정한 범위 내에서의 값을 가져오기 위해 행 혹은 열의 위치 값을 넣는 부분이며 match함수는 지정한 값을 찾아 위치 값을 반환하는 함수이기 때문이다.

 한마디로 index의 위치 값을 직접 지정하는 것이 아닌 match 함수를 통해 나온 결과 값을 위치 값으로 넣는 것이라고 보면 된다.

 (index는 몇 번째 있는 값을 가져와, match는 값이 몇 번째 있는지 알려줘)

인덱스 매치


사용 예

 아래의 표에서 마이콜의 점수를 구해보자.

 사용 예


 우선 표의 범위는 B2에서 F8 그리고 마이콜의 위치 값은 알 수 없는 상황이다.

 따라서 index 함수에서 arrayB2:F8로 지정하면 되지만 마이콜의 위치는 찾아야 하는데 이때 사용하는 함수가 match함수이다.


 마이콜의 이름이 있는 곳은 열이기 때문에 row_num 부분에 match함수를 사용하면 되며 lookup_value는 "마이콜", lookup_array는 이름이 있는 C2에서 C8까지 그리고 문자를 찾는 것이기 때문에 [match_type]0을 주면 된다.

 그리고 마지막으로 [column_num]은 표에서 점수가 4번째에 있으니 4를 주면 마이콜의 점수 값을 얻을 수 있다.

 =INDEX(B2:F8, MATCH("마이콜",C2:C8,0), 4)

마이콜의 점수를 구해보자


vlookup 함수와의 차이?

 위의 사용 예를 보면 vlookup 함수와 크게 다른 점이 없어 보이는데 vlookup 함수는 지정한 범위의 첫 열에서 값을 찾아 오른쪽 행에 있는 정보 값을 가져오는 방식이기 때문에 원하는 값이 왼쪽에 있다면 가져올 수 없다.

 하지만 index와 match 함수를 같이 사용하는 경우에는 단순히 좌표 값을 찍는 형태로 값을 가져오기 때문에 index의 범위가 허용하는 한 오른쪽이든 왼쪽이든 원하는 값을 가져올 수 있다는 장점이 있다.


 예를 들어 사용 예의 표에서 마이콜의 번호를 구해야 하는상황이라면 이름은 C열에 있고 번호는 B열에 있기 때문에 vlookup 함수는 사용할 수 없다.

 반면 index와 match 함수 다음과 같은 수식으로 마이콜의 번호를 구할 수 있다.

 =INDEX(B2:F8, MATCH("마이콜",C2:C8,0), 1)

마이콜의 번호를 구해보자