<엑셀VBA 입문 1강> 함수
엑셀 VBA 입문 1강이다.
책을 써야한다는 생각에 사로잡혀 있다보니 글을 쓸 수 없었다. 페이지 구성, 목차 따위를 고민하다가 시간만 흘렀다. 각설하고, 마음을 비우고 VBA를 알려주는데에만 집중해서 쓰겠다.
본 강의의 목적은 회사 업무에 도움이 되는 팁을 제공하는 것이다. 강의를 읽으며 <어떻게 하면 내가 맡은 업무/과제에 도움이 될까?> 생각해보기 바란다.
(참, 만약 VBA가 무엇인지 대충 알고 있고, 한두번이라도 써본적이 있다면, 시간절약을 위해 이 강의를 읽지 않아도 된다. VBA를 심도있게 다루는 강의가 아니다. 말 그대로 입문이다.)
1강. 함수
엑셀에는 함수라는게 있다. 익히 알다시피 if, sum, sumif, count, counta 등이다. 함수란 입력값을 넣으면 출력값을 되돌려주는 것을 뜻한다.
예를 들면 아래와 같은 데이터가 있다고 하자.
딱 보기에도 빈약해보이는 데이터지만, 몇백만건의 업무 데이터라고 상상하며 진행하자.
간단한 문제를 풀어보자. 서울에 있는 점포수는 총 몇개일까?
데이터가 적다면 직접 세는게 빠르지만, 많다면 엑셀 함수가 압도적으로 빠르다. 이 경우 sumif 함수로 간단히 해결할 수 있다.
=SUMIF(대상영역, 조건, 덧셈할영역) 으로 쓴다.

하지만 만약 데이터가 아래와 같은 모습이었면 어떨까? 곧바로 sumif를 사용하기는 어려울 것이다.

이때 자주 사용하는 함수가 left, mid, right와 같은 함수다. 첫번째 열의 앞쪽 2글자를 떼어 다른 열에 위치시켜둔다면(캐싱), 앞서와 동일하게 sumif로 문제를 해결할 수 있다.

A열의 주소의 앞쪽 2글자를 left함수로 떼어 C열에 캐싱해두었다. 이어서 F열에서 sumif를 사용하였다. 여기까지가 일반적인 엑셀 함수의 사용법이다. 이렇게 여러 함수를 잘 섞어쓰는 것만으로도 업무를 잘해낼 수 있다.
그런데 만약 이것보다 조금 더 개선된 함수를 필요로 하고 있는 상황이라면 어떨까?
예를 들어 부산, 대전이 아니라 광역시만 count하거나 sum하고 싶다면 어떨까? 지금과 같은 데이터에서는 mid함수를 이용해 3번째 글자부터 3글자씩을 가져와 처리해볼 수 있다. 아래 그림처럼 말이다.

하지만 운 좋게 특별시라는 단어가 모두 같은 위치(3번째 글자부터 3자리)였기에 망정이지, 찾고자 하는 단어가 랜덤한 자리에 위치한다면 left, mid, right 함수를 사용할 수 없다.
위치에 상관없이 특정 단어를 포함하는지 알고 싶을 때는 search 또는 find 함수를 쓴다. 예를 들어 =IF(ISERROR(SEARCH(찾을문자, 대상텍스트), -1, SEARCH(찾을문자, 대상텍스트)) 식으로 쓰면 찾는 문자가 대상 텍스트의 몇 번째에 위치하는지 알아낼 수 있다.
아래는 search(또는 find), if, countif 함수를 동원해 <사과>라는 단어가 몇 번 출현하는지 세어보았다.

결과적으로 사과의 개수를 5개로 세고 있다. 그러나 몇 가지 한계점이 드러난다.
우선 함수가 너무 길고 복잡하다. 또한 포함하는 것을 찾아내는 함수(search, find)로는 원하는 결과를 얻지 못할 수도 있다. 예를 들어 A2 칸의 <사과상자 속의 사과>라는 문구 속에서 <사과>라는 단어는 2번 출현한다. 하지만 search로는 포함되는지 포함되지 않는지를 알아낼 수 있을 뿐, 특정 단어가 몇 번 출현하는지까지 셀 수는 없다.
이제부터가 시작이다.
엑셀의 함수는 무수히 많지만, 그런 함수들이 조금 불편하다고 여겨졌다면, VBA를 배워 새로운 함수를 만들어낼 수 있다.
만약 여태까지 그런 생각을 하지 않았다면, 앞으로는 일부러 해보는 것도 좋을 것이다.
목적은 어디까지나 업무를 좀 더 스마트하게, 신속하게 끝내는 것이다. 거기다 VBA를 다들 못하는 곳에서 혼자 잘하면 유능하다는 인상을 확실히 심어줄 수 있다.
2강은 함수 만들기다.
이어지는 글 <엑셀VBA 입문 2강> 매크로 함수 만들기 : https://blog.naver.com/bb_/221234382213
이어지는 글 <엑셀VBA 입문 3강> 버튼 클릭하면 실행되는 함수 만들기 : https://blog.naver.com/bb_/221249068033
이어지는 글 <엑셀VBA 입문 4강> 수식 입력줄에서 함수 실행하기 : https://blog.naver.com/bb_/221249107922