Tech/Office

INDEX와 INDIRECT의 비교

onesixx 2009. 5. 30. 21:43
반응형

 


C19셀 : =IF(ISERROR(VLOOKUP($B19,INDIRECT($C$16),2,0)),"",VLOOKUP($B19,INDIRECT($C$16),2,0))
D19셀 : =IF(ISERROR(VLOOKUP($B19,INDIRECT($C$16),3,0)),"",VLOOKUP($B19,INDIRECT($C$16),3,0))
E19셀 : =IF(ISERROR(VLOOKUP($B19,INDIRECT($C$16),4,0)),"",VLOOKUP($B119,INDIRECT($C$16),4,0))
INDIRECT함수만 가지고 동적차트를 만드려고 할때 #VALUE라는 에러가 뜹니다. 한 시트안에서 각각의 이름으로 정의된 3개의 범위를 제대로 참조를 못해서 이런 오류메시지가 뜨게 됩니다.
이를 해결하기 위해서 VLOOKUP함수의 두번째 인수에 indirect함수를 이용해서 값을 가져오는 식을 사용하면 됩니다.
파일을 첨부하오니 참고해서 보세요~

 

 

 

 

 

사실 INDEX함수와 INDIRECT함수는 엄연히 쓰임새도, 역할도 다릅니다.

하지만, 때에 따라선 같은결과값을 얻어낼수있습니다.

같은결과값을 얻어낼수 있다는말은 수식은달라도 결과값을 돌려주는 방법이같다는것이고,

이는 나중에 알게될, 참조형을 지원하는 함수이기에 가능하다는말입니다.

오늘은..

INDEX와 MATCH함수를 공부하기 앞서..

천천히 INDEX함수를 맛보기로 살짝 엿보고...

아울러 INDIRECT함수도 이번기회에 살짝 맛보기로 하겠습니다..

위에서 보듯...

'값'이라는 데이타들중에서 제일 마지막에 입력된 값을 추출하는 예제입니다.

보통은 INDEX함수를 사용해서 해결할수있지만,

INDIRECT함수라는 것도 있구나 라는 것을 살펴볼겸,

함께 사용해 보았습니다.

보통, INDEX함수는 MATCH함수와 병행해서 많이사용되는 함수입니다.

즉, INDEX함수는 어떤범위내에서 값 또는 값에대한 참조를 뽑아줍니다..

INDEX함수는 배열형, 참조형등 참 어려운용어들로 설명이되기에..

이렇게 어려운 용어들은 나중에 이해한다해도...

어떤범위내에서 내가 원하는 어떤 값을 추출하기위해서 사용한다라고 기억하세요.

그 어떤값은 배열의 위치나, 또는 상대위치를 통해서..

좌로 몇칸, 우로몇칸의 값을 뽑을수있다라고 생각하시면 됩니다.

이제 그럼 위의 함수를 살펴보겠습니다.

=INDEX(C5:C22,COUNTA(C5:C22),0)

라는 수식이 사용되었습니다.

이말은 무엇일까요..

C5:C22라는 범위내에서 COUNTA(C5:C22) 라는 숫자만큼 아래로 몇칸을 움직이고,

오른쪽으로 0 칸만큼 움직여서 위치한 셀의 값을 뽑아라라는 말입니다.

COUNTA(C5:C22) 라는 함수는 젤 마지막데이타의 셀이..

항상 변하기때문에..

그때 그때 범위에 유효한 값이 있는 셀이 몇개나 있는지 카운트합니다.

그렇기에, 새로운데이타가 입력이되면, 그 숫자는 당연히 높아지겠죠.

위에서는 COUNTA(C5:C22)= 10이라는 숫자를 반환합니다.

총18개의 셀에 유효한데이타가 들어있는 셀은 10개라는 말입니다.

따라서

=INDEX(C5:C22,COUNTA(C5:C22),0)

=INDEX(C5:C22,10,0)

이렇게 바뀌고

결과적으로 위수식은,

C5부터 아래로10칸내려가고 오른쪽으로 0칸이동한후의 셀값을 반환하게됩니다.

바로 그값이 21이며, 젤 마지막에 위치한 셀값이 되는겁니다.

위에서는 COUNTA라는 함수를 사용했지만,

보통 MATCH함수가 사용됩니다.

그 이유는 왜 그런지 아시겠죠?

셀칸을 세는일은 별로 실무에선 필요치않기때문이며,

실무에서는 어떤값을 찾아 그값의 위치를 뽑아서,

상대적인 어떤 목록의 값을 취하기 때문입니다.

또 위에선, 아래방향의 값만을 COUNTA함수로 뽑았지만,

좌우로도 이동시킬수있습니다.

이럴때, MATCH 함수를 사용해서,

좌우열에서 '어떤값A'을 찾고,

아래행에서 '어떤값B'를 찾는다면,

=INDEX(어떤범위,MATCH(어떤값B찾기),MATCH(어떤값A찾기)) 

이처럼 수식을 사용하게 됩니다.

바로, X축과 Y축의 좌표값을 찾아,

하나의 값의 위치를 만들어내는것과 같습니다.

바로 이렇듯, INDEX는 1차원적인 MATCH함수를 이용해서..

X축값(행)과, Y축값(열)을찾아 그 좌표값에 해당되는(교차되는)값을 추출하는 함수입니다.

여기선 MATCH함수에 대해선 설명하지않겠습니다.

이번강좌에서는 INDEX가 어떻게 쓰이는 물건인고~하는것만..

어렴풋이 감만 잡으시길 바랍니다..

한번에 다 이해한다면 좋겠지만,

많이 보고, 자주보면서 친근해지는게 더 좋습니다.

한참을 보다보면, 다음엔 OFFSET함수와 헷갈리기도합니다.

개념정의가 100%이루어지지않은상태에서..

이함수 저함수를 보다보면,

헷갈릴수도 있습니다..

다음엔 MATCH함수와..

그리고 INDEX함수와 OFFSET함수의 차이점에 대해서도 살펴보겠습니다...

그리고 INDIRECT함수에 대해서도 다음에 살펴보기로 하겠습니다.

아시죠?

눈으로만 백번보는거 전혀 도움이 안된다는것...

백견이 불여일행!!이라고 했습니다.

바로 따라해보시기바랍니다.

그리고 하나하나 인수나 범위를 바꾸어보면서..

어떻게 값이 변하는지 살펴봐야 실력이 빠르게늡니다..

 

 

<참조>
http://opencast.naver.com/XL850

반응형

'Tech > Office' 카테고리의 다른 글

Exceller  (0) 2012.01.02
Excel Macro - VBA  (3) 2010.05.07
다중조건-Vlookup,Match,Index,Sumproduct  (0) 2009.06.19
찾기 함수 MATCH() INDEX() OFFSET()  (1) 2009.05.30
인터넷 자료에 엑셀 수식적용- 유령문자/공백제거  (0) 2009.03.03
Vlookup함수 Hlookup함수  (0) 2008.06.05