컴퓨터/엑셀 2008. 12. 18. 09:55

[엑셀] 내가 찾는 자료는 어디에 있는 것이야? (2) - index

휴가를 다녀왔더니 정신이 없었나 보네요.-_-;

lookup을 올리려다가 match를 먼저 올려버렸습니다.

원래는 lookup->match->index 순서로 진행되어야 하는데... -_-;;; 쩝. 암튼 index를 진행하겠습니다.

match는 해당하는 자료의 위치를 알려주는 값입니다.

프로그래밍을 조금이라도 아시는 분이라면 배열 이라는 단어를 아실껍니다.

배열을 설명을 위해 간략히 얘기를 하자면. 값들의 집합 이라고 볼 수 있지요.

수학시간 맨 첨에 배우는 게 집합 이지요. {1,2,3....} 이런식으로 되던거요.. 부분집합도 있고 등등등..

그럼 엑셀에서 배열은 무엇일까요? 값들의 집합 혹은 cell들의 집합 입니다. 이 셀들의 집합은 Range가 되지요.

이해가 잘 안되시나요?

예를 들면,  "C1:C50" / "A:A" / "10:10" 이런 형태가 배열의 예가 될 수 있겠네요.

정확히는 매트릭스(행렬) 형태도 배열로 계산이 되나 그렇게까지 하면 머리가 아프므로 하나의 행/열로 구성된 값혹은 셀들의 집합 이라고 생각하겠습니다.

match라는 함수는 가 배열에서 내가 찾고자 하는 값이 몇 번째 있는지를 알려주는 함수 입니다.

학생이 50명인 반에서 "투루노" 라는 학생은 몇번인지를 알려주는 함수 라고 하시면 이해가 될런지요?

이 경우 학생 50명은 한개의 배열이 되는 것이고 "투루노"는 lookup_value가 됩니다.

 

프로그래밍을 하신분이라면 1번이 아닌 0번부터 시작에 대해 익숙하시겠지만 이 엑셀은 개발자용 프로그램이 아니라 1번부터 시작합니다.

 

즉 1번 부터 50번까지 50명의 학생이 있습니다.

그중 투루노가 10번 이라면 match의 결과는 10이 됩니다.

여기까지가 전 시간의 복습입니다.

그럼 index라는 함수는 무엇일까요?

다시 우리가 작성하던 예제로 돌아가보겠습니다.

image

E3의 행에 index함수가 사용되고 있습니다.

index는 주어진 배열에서 index에 해당 하는 값을 리턴합니다.

첫번째 인자는 array 혹은 reference가 됩니다. 그냥 편하게 같은거라고 생각하십시오. (복잡해지면 어려우니...)

즉 위의 에서는 B:B B열 전부가 해당 인덱스 입니다. 그리고 참조값은 E2 = 3 입니다.

B:B 열은 이름/홍길동/홍길순..... 이런식으로 진행됨으로 이름(1)/홍길동(2)/홍길순(3) 의 형태로 됩니다.

즉 해당 배열에서 3번째의 값은 홍길순 이 되는 것이죠.

 

그럼 지난 시간엔 mathc함수로 홍길순이 3번째 인자라는 것을 알았고 이번엔 그 3이라는 값을 가지고 다시 홍길순이라는 걸 알았네요.

 

그게 도데체 무슨 소용이 있을까요?

 

왜 이런 캐삽질을 하는 걸까요?

 

미친건가요?

 

다시 아까 예를 들었던 50명짜리 반으로 돌아가겠습니다. 출석부에서 10번을 찾으면 "투루노"가 나오겠죠? 

이름을 몰라도 투루노를 찾을 수 있습니다. ^^*

 

 

 

(그냥 원래 데이타를 보고 말겠다구요? ㅎㅎㅎ)

 

 

저도 그렇게 생각합니다. ^^*

 

 

 

그럼 위의 함수를 유용하게 바꾸어 보지요.

 

image

reference가 B:B 에서 C:C로 바뀌었습니다. 단지 그것 하나만 바꾸었는데 이번엔 이름이 아닌 전화번호가 나옵니다.

 

우리가 이해하는 대부분의 데이타는 2차원 배열 (행렬)의 형태를 띄고 있습니다. (물론 수학이나 과학영역에선 보다 심도 깊은 차원도 많이 나오지만 여기 엑셀에선 일단 2차원까지만으로 이해하겠습니다.)

아까 예를 들은 출석부/월별 수입,지출/사원명부/거래장부/수업시간표/배차시간표/근무시간표/가계부/일자별주가 등등등 셀수도 없지요.

위의 예에서도 2차원을 넘어가는 녀석들도 있네요. 엑셀에서도 다차원을 다룰수는 있습니다. 시트가 그걸 지원하는 것이고 몇가지 꽁수로 다차원인것처럼 쓰면 되구요. ^^*

암튼 우리는 1차원 배열(array)에서 2차원(matrix)로 넘어왔습니다. 그리고 이런것들을 다루는 함수가 index/match/lookup/vlookup/hlookup이 있습니다.

1차원은 index/match로 2차원은 lookup계열 함수로 다룬다라고 이해하시면 조금 편하게 이해하시는 것일지도...

(물론 쓰다보면 구분은 없습니다. 제 강의 목표도 구분을 없애고 편한걸 쓰겠다니깐요)

 

자 다시 본론으로 들어가서 위의 index와 match의 조합으로 lookup함수와 비슷한 결과를 내었습니다.

image

=LOOKUP(E1,사원자료!B:B,사원자료!C:C)

에서 쓰인 lookup 과 같은 일을 index와 match만으로 구현해본것이죠. 한 개의 복합 함수로 정리하면 이렇게 되겠네요.

image

match의 결과값을 바로 index에 넣어주었습니다.

lookup이 더 편한것 같지요? 사실 lookup이 더 편합니다. ^^* 그럼 왜 lookup을 쓰지 어렵게 index/match같은걸 강의 했냐구요?

 

미리 말씀드리면 lookup은 정해진 역활 뿐이 못하지만 index/match로 분리해두면 뭔가 좀 더 일을 많이 할 수 있는 가능성이 생긴다고 할까요?

어떻게 그런일이 발생하는 지는 조금 더 진행해서 알아보도록 하지요..

 

아 그리고 숙제입니다. 위의 예제에서 E1을 홍길순 으로 하면 어떻게 되는지 함 확인해보세요. ^^*

 

-마음가는 길은 곧은 길-