본문 바로가기
<툴, 프로그램 관련>/[Excel Hacks]

엑셀 Indirect 함수 사용해보기

by Aggies '19 2021. 5. 7.
반응형

한국에서 일할 때 사수가 그런 말을 했었다. 일을 찾아서 진행하는 사람이 일을 잘하는 것이다. 그렇게 5년을 함께 일하다보니 일을 찾아서 하는 습관이 생겼는데.. 무튼 사설이 길었고 해당 포스트는 추후 활용도가 높을 것 같은 INDIRECT 함수를 기억하고자 작성한다. 

 

운영하고 있는 네트워크 장비에 MAB 이라는 기술을 적용하고 있다. 궁극적으로 Cisco의 ISE를 이용해 현재 운영중인 네트워크 전반을 바꾸려고 하는데 이를 위해서는 사전작업이 필수적인데 그 것이 바로 MAB을 적용하는 것이다. 수 천대의 장비가 운용중이고 그걸 일일이 접속해서 interface 별로 조회해서 MAB이 적용되었는지 여부를 수작업으로 하는건 어불성설이다. 따라서 Python을 이용해 장비의 현 상태를 아래와 같이 정리했다. 

 

현황을 조사해보니 크게 3가지 범주가 있었다. 모든 downlink interface에 MAB이 적용된 경우, 모두 적용되지 않은 경우, 그리고 일부만 적용된 경우. 이를 통해서 아래 테이블처럼 각각 switch의 상태를 표현하고 싶었다.

 

# of no MAB'd interfaces 컬럼의 정보를 구할 때 Indirect 함수를 사용했다. 

 

COUNTIF(INDIRECT(CONCAT($I$2, "!", "E", E2, ":", "E", F2)), "FALSE")

 

CONCAT함수부터 간략히 설명하면 실제 INDIRECT함수로 전해줄 인자의 예는 Rawdata!E2:E96이다. INDIRECT 함수의 첫 인자는 문자열로 만들어진 값을 넘겨주어야 하기에 상기와 같이 CONCAT을 이용해 전달해주었다. 즉, 내 생각의 프로세스는 이러하다.

 

1. 각 스위치 항목의 시작점과 끝을 구한다. 예를 들어 두번 째 행부터 95번째 행까지

2. 앞서 구해진 항목의 시작과 끝 행의 숫자를 조합해 INDIRECT의 문자열 형태로 전달한다

3. COUNTIF 함수를 이용해서 MAB의 FALSE값을 구한다.

4. # of interfaces와 # of no MAB'd interfaces를 비교하여 No MAB, Partial MAB'd, 그리고 MAB'd로 분류한다.

 

검색을 간단하게 해보았는데 INDIRECT는 이 함수 자체로는 큰 매력이 없지만 VLOOKUP이나 별도의 함수랑 결합해 사용할 때 시너지가 나는 함수이다. 왜냐하면 아래와 같이

특정 셀의 위치를 참조해 단순히 값 하나를 return받는 기능을 보면 굳이 INDIRECT의 필요성을 느끼지 못한다. 하지만 범위나 특정 셀의 참조 위치나 참조하는 범위가 동적으로 바뀔경우 꽤나 유용한 함수이다.

반응형