컴퓨터/엑셀 2008. 12. 17. 13:01

[엑셀] 내가 찾는 자료는 어디에 있는 것이야? : Match / index

오늘 배울 함수는 match와 index입니다.

 

이것이 오늘 배우고자 하는 내용입니다. 지난 시간에 공부한 lookup 예제를 다시 풀어보는 것이죠. 이번에는 참조를 쉽게 하기 위해서 같은 시트에서 작업합니다. 그래야 직접 눈으로 보면서 이해하기 쉬우니깐요.

그리고 위의 그림은 결과 페이지입니다.

먼저 Match 함수가 무엇인지에 대해 알아보지요.

 

도움말에 설명이 잘 되어 있군요. lookup_value/lookup_array 등 많이 보던 녀석도 보이네요. match_type이란것도 보이구요.

익숙하지 않다면 지난 강의를 다시 한번 보세요.

lookup_value는 lookup()에서와 같습니다. 배열상에서 찾고자 하는 값이죠.

lookup_array는 검색할려는 대상입니다. lookup에서의 lookup_vector와 같습니다.

match_type은 조금 있다 설명하지요.

array라는 용어가 등장했는데 우리말로 번역하면 배열입니다. 그러나 여러분들은 그냥 단순히 "레인지" 하고 같다 라고 이해하시면 됩니다. (깊게 들어가면 차이가 있지만 굳이 그 차이까진 모르셔도 됩니다.)

즉 위의 예제에선 "홍길동,홍길순,투루노,라라루" 가 lookup_vector/lookup_array 가 되는 것입니다. 그리고 검색어 lookup_value가 있는지 있다면 몇번째 위치에 있는 지를 알려주는 것이 바로 match 펑션이 하는 일입니다.

match_type은 찾고자 하는 검색어를 좀 더 명확히 해주는 인자값입니다. 값은 -1 , 0, 1 이 될 수 있으며 디폴트 값은 1입니다. 자세한 건 직접 도움말을 참조하시고 여기서 쓸 옵션은 '0' 입니다.

0 은 해당 하는 자료중 중복되는 자료가 있어도 상관하지 않고 그 첫번째 자료를 리턴해줍니다.

만약 투루노 주식회사에 홍길순 이라는 같은 이름의 직원이 3명이 있다고 해도 그 중 첫번째 값만을 리턴해줍니다. 실제로 한번 볼까요?

 

홍길순 사원이 여러명입니다. 그러나 결과값은 2입니다.

B:B 라고 해서 나중에 사원이 많이 늘어라더라도 수식을 수정하지 않도록 했습니다.  그러다 보니 1행의 사원/이름/전화번호 까지 카운트가 되기때문에 결과값은 2 가 아니라 3이 되었습니다.

"이름/홍길동/홍길순/투루노/라라루....." 이렇게 배열이 되고 홍길순은 3번째 항목이 되는군요

만약 0이 아닌 값을 match_type으로 쓰기 위해선 정렬을 해주어야 합니다. 그리고 본인이 계속 진행하게 될 최종 목표에서도 정렬을 하는 것이 더욱 좋은 결과를 낼 수 있습니다.

정렬이 안되어 있을 경우에는 원하는 값이 정확히 나오지 않을 수 있으니 가능하면 정렬을 해주시기 바랍니다.

여기서 잠깐 DataBase에 대해서 맛만 보고 지나가도록 하겠습니다.  엑셀은 어떤면에서 데이타베이스를 많이 닮아 있습니다. 데이타베이스란 자료를 체계화하여 저장하는 것이라고 할까요? (물론 db를 정의하기 위해선 이 한문장으로는 매우 부족합니다. ^^*)  일반적으로 생각할때 위의 사원 자료도 훌륭한 데이타 베이스입니다. 쉽게 이해한다면 표는 데이타베이스다 라고 이해하셔도 될껍니다.

여기서 필드/레코드 하는 db용어가 등장하는 데 레코드는 사원 한명 한명을 의미합니다. 즉 한 행 한행의 데이타를 가르킨다고 할까요? 필드란 각 레코드의 구성요소로서 "사원번호, 이름, 전화번호" 등이 필드가 됩니다. 이와는 다른 말로도 불리기는 하는데 엑셀에서는 이렇게 쓰이고 있습니다. (향후 db로도 확장됩니다.)

그리고 키 필드리는 것이 있습니다. 각각의 레코드를 고유하게 하기 위한 값이 저장된 필드라고 할까요? 여기선 사원번호가 그에 해당합니다. 우리가 항상 쓰는 주민번호도 대한민국 국민 모두에 대해 유일하지요? 훌륭한 키 필드가 됩니다.

지금 굳이 db용어에 대해서 설명드린 이유는 위와 같은 자료를 만들때 이러한 키 필드가 있어야 관리하기가 편리합니다. 만약 위의 자료에서 match함수를 쓰기 위해 이름순으로 정렬하였다면 나중에 다시 원래 대로 어떻게 정렬 할 수 있을까요? (물론 이게 키 필드의 목적은 아닙니다.)

키 필드가 있으면 유용하겠지요? 키 필드는 꼭 필요한 것은 아닙니다. 그리고 여러개의 필드가 모여서 키를 구성할 수 도 있지요.

너무 깊게 들어가면 창 닫아 버릴지도 모르니 이쯤에서 접겠습니다. 그냥 이런게 있다 라고만 알고 넘어가면 될 듯 하네요. ^^*

 

이상으로 match가 무언지 알아봤습니다. 그럼 index를 알아볼까요?

 

아핫 내릴 시간이 되었습니다. ^^*

 

투루노는 퇴근하면서 버스안에서 이 글을 작성하다보니. ㅎㅎㅎ

지금은 컴퓨터를 꺼야 합니다. ^^*

그래서 index는 다음 시간에.. 절대 욹어먹기가 아닙니다. ^^* ㅎㅎㅎ

 

-마음가는 길은 곧은 길-