index함수와 match함수의 결합
우리는 지금까지 index함수와 match함수의 사용법에 대해 각각 알아보았다.
그렇다면 index함수와 match함수를 어떻게 같이 써서 어떻게 하면 함수의 시너지를 낼 수 있을까?
앞서 설명했지만, 먼저 기억하고 있어야 할 점은 index함수는 행과 열이 교차하는 지점의 값을 출력해주는 함수이고 match함수는 내가 찾고자 하는 값의 행 또는 열의 위치값을 출력해 주는 함수이다.
간단히 index함수와 match함수의 사용법에 대해 복습해 보자.
"=index(array, row_num, col_um)"
"=match(lookup_value, lookup_array, match_type)"
index함수의 구조를 잘 살펴보면 인수값에 행번호와 열 번호가 존재하고, match함수는 행 또는열의 위치값을 출력해준다.
여기서 index함수와 match함수를 정의할 때 공통되는 것이 무엇인가?
눈치 빠른 사람은 벌써 눈치챘을지 모르겠는데 바로 index함수는 행과 열의 값이 필요하고, match함수는 행과 열의 값을 알려주는 함수라는 것이다.
결국 우리가 지금부터 하려는 작업은 index함수 행과 열의 인수를 숫자로 직접 입력하는 대신, match함수를 사용하여 index함수의 row_num인수와 col_num인수값을 작성해 주려고 한다.
말로만 설명하기에는 어려움이 있으니 아래의 사례를 통해 index와 match함수를 어떤 식으로 사용하는지 설명해 보도록 하겠다.
<목차>
1. index함수와 match함수의 결합 사례
2. index, match함수를 작성할 때 주의 할 점
1. index함수와 match함수의 결합 사례
아래의 그림을 보면 물품의 종류와 월별 가격이 정리된 자료가 보인다.
이제 우리는 물품종류(A8셀에 입력)와 해당월(B8셀에 입력)을 설정하여 해당 물품의 종류와 해당 월이 교차하는 셀의 데이터 값, 즉, 가격(C8셀)을 자동 출력해 보도록 하겠다.
만약 "호박"의 "1월 가격"을 알기 원한다면 index함수와 match함수를 어떻게 사용해야 할까?
먼저 index함수의 사용법에 대해 간단히 복습해보자.
"=index(array, row_num, col_um)"
우리는 알고자 하는 "호박"의 "1월 가격"은 2행과 2열이 교차하는 값인, 3,000이 출력되어야 제대로 된 수식이다.
행과 열이 교차하는 지점의 3,000이라는 결과값이 출력되게 하는 것이 우리의 목표이므로 행과 열이 교차하는 지점의 값을 찾는 함수인 index함수가 주된 함수 식이 된다.
match함수는 A8셀에 입력되는 물품의 종류 및 월을 입력하는 B8셀의 값이 입력할 때마다 매번 바뀌게 되므로 index함수에 들어가는 row_num 인수와, col_num인수를 대신하여 사용되게 된다.
따라서 index함수와 match함수를 함께 사용하면 아래와 같은 형식의 수식이 된다.
다시 문제로 돌아와서 그렇다면 1월 호박의 가격을 알기 위해서는 함수식을 어떻게 입력해야 할까?
위의 수식 입력방식을 참고하여 C8셀에 수식을 입력해 보면 다음과 같다.
"=index(B2:D4,MATCH(A9,A2:44,0),MATCH(B8,B1:D1,0))" 이렇게 작성할 수 있다.
2. index, match함수를 작성할 때 주의 할 점
여기서 주의 할 점은 index함수를 작성할 때 array의 범위를 잘 잡아야 한다는 점이다.
앞서 말했지만, index함수는 행과 열이 교차하는 지점의 값을 출력하는 함수라고 말했다. 따라서 찾고자 하는 데이터가 있는 범위를 지정하는 인수인 array의 범위를 정할 때에는 표의 전체 범위를 잡아서는 안된다.
A1셀은 1행과 A열이 교차하기는 하지만, 가격이 출력되는 지점은 아니기 때문에 우리가 찾기를 원하는 가격이 입력된 곳이 아니기 때문이다.
array의 범위는 가격값이 존재하는 행과 열이 교차하기 시작하는 셀부터 범위를 잡아야 결과값에 오류가 발생하지 않는다.
왜냐하면 우리가 알고자 하는 결과값이 존재하는 영역은 A1부터 아니라 B2셀부터 시작하기 때문이다.
따라서 array의 범위는 우리가 출력하기 원하는 결괏값이 존재하는 B2부터 D2까지를 영역으로 지정해야 한다.
다시 문제로 돌아와서 결국 우리가 "호박"의 "1월가격"을 알기 위해서 입력해야 하는 수식은 어떻게 될까?
C8셀에 "=index(B2:D4,MATCH(A8,A2:A4,0),MATCH(B8,B1:D1,0))"
이렇게 index와 match함수가 결합된 수식을 작성할 수 있을 것이다.
여기까지 index함수와 match함수를 이용해서 수식을 작성해 보았다.
두 가지 함수를 이용해서 행과 열이 교차하는 지점의 값을 자동으로 손쉽게 구해 보았다.
그런데 여기서 의문점이 생길 것이다.
index함수와 match함수를 결합해서 사용하는 것이 vlookup함수를 사용하는 것과 비슷해 보이는데 굳이 왜 사용해야 하나?
그 의문점은 다음에 포스팅에서 알아보도록 하자. 오늘은 여기까지.
댓글