컴퓨터/엑셀 2008. 12. 30. 12:45

[엑셀] 자동화 분석 및 계산의 첫 걸음 : Indirect

오늘은 제가 쓰는 함수들 중에서 가장 중요한 함수입니다. 사실 이 함수를 알고 나서야 엑셀이 내 맘에 들기 시작했다고 할까요? ^^*

물론 이 함수 말고도 비슷한 역활을 할 수 있는 함수들도 많습니다. 여러 조합으로 다양합니다. 그러나 indirect는 비교적 직관적이라. 주로 사용하는 편이지요

그럼 indirect란 어떤 함수 일까요?

 

도움말에서는 이렇게 설명하고 있습니다.

ref_text를 참조하여 반환 한다는 군요. 도데체 무신 귀신 시나라 까먹는 소리랍니까? ㅎㅎ

E7을 보시면 그 사용법을 보실수 있습니다. 즉 텍스트로 된 주소를 참조로 반환한다고 할까요?

이걸 왜 이렇게 어렵게 할까요? 그냥 E7에다가 =E1 이라고 입력하면 간단할텐데요?

엑셀을 쓰면서 수식을 만들다 보면 해당 수식을 동적으로 필요에 따라 변경하고 싶은 경우가 있습니다. 그럴 경우 유용하게 사용할 수 있는 가능성을 제공하는 것이 바로 Indirect이지요

위의 사원 예제를 조금 확장해서 직책을 추가해보겠습니다.

 

F4에는 현재 전화번호를 보여주고 있지요 만약 직책을 검색하고 싶으면 어떻게 해야 할까요?

수식을 index(D:D,F2)로 바꾸면 됩니다. 그럼 바로 직책으로 변경되겠지요.

근데 매번 같은 일을 해야한다고 생각해보지요... 어떻게 하면 될까요?
(저라면 밑에다가 수식을 하나 더 만들고 맙니다. ^^* )

ㅎㅎㅎ 이 경우엔 예제가 너무 단순해서 그냥 수식을 추가하는 것으로 해결이 되지만 indirect를 사용하는 예제로 바꾸어보겠습니다.

F7열의 수식을 보시죠. B:B 라는 주소대신에 Indirect(F6) 으로 되어있스비나다. F6에는 B:B라고 그냥 텍스트 문자열이 입력되어 있습니다.

그럼 여기서 직책을 검색할려면 어떻게 해야 할까요? F7의 수식을 변경하지 않고 가능할까요?

F6의 문자열 내용만 바꾸는 것으로 간단하게 수정이 되었습니다.

조금더 확장을 하면 D:D 라고 치는 것도 귀찮지요 간단히 D열이라는 의미에서 D만 입력해도 되도록 해보겠습니다.

F6이 문자열이 아닌 수식으로 바뀌었습니다. F5에 입력된 D라는 문자열을 가지고 indirect에 넣어줄 인자를 만들었네요.

그럼 조금만 더 머리를 써 볼까요? 지금은 자료랑 같은 페이지라 D열이 직책열임을 쉽게 알 수 있지만 다른 페이지였다면 번거롭겠지요?

D대신에 "직책" 이라고 입력하면 검색이 되도록 하고 싶어요.

먼저 match함수를 사용하여 직책이 몇번째 행인지를 알아냅니다. a, b, c, d 4번째 열이군요 그래서 결과값은 4 입니다.

그럼 이 4라는 숫자로부터 어떻게 D라는 값을 얻어낼 수 있을까요? 다양한 방법이 있지만 쉬운 방법으로 char 함수를 쓰겠습니다.

컴퓨터 내부에는 ascii라는 문자열을 쓰고 거기에 정의되기를 'A'는 65라고 정의 되어 있습니다. B는 66, C는 77 이런식이죠.

너무 길어지면 짜증낼테니....

그림과 같이 수식을 만들면 됩니다. match에서 계산된 결과 + 64를 해줌으로 64+4 = 68 , char(68)은 "D"가 됩니다.

char함수에 대해서는 도움말을 확인해보시면 됩니다.

 

다른 방법도 있으나 그것까지 설명하면 또 너무 길어지니 여기서 줄이기로 하지요.

 

-마음가는 길은 곧은 길-