마이크로소프트 엑셀(Microsoft Excel)에는 수많은 기본 제공 함수가 탑재되어 있어 대부분의 작업은 이것만으로도 충분히 처리할 수 있습니다. 하지만 기존 함수로는 구현할 수 없는 기능이 꼭 필요하다면 어떻게 해야 할까요?
엑셀에서는 VBA를 활용해 사용자 지정 함수(Custom Function), 즉 UDF(User Defined Function)를 직접 만들 수 있습니다. 원하는 기능을 갖춘 함수를 작성하면 일반 내장 함수처럼 셀에 "=" 입력 후 함수 이름을 입력하는 방식으로 바로 사용할 수 있습니다. 지금부터 VBA로 엑셀 사용자 지정 함수를 만드는 과정을 단계별로 살펴보겠습니다.
사용자 지정 엑셀 함수 만들기
1단계: 개발 도구 탭 활성화
VBA를 사용하려면 먼저 리본 메뉴의 "개발 도구(Developer)" 탭을 활성화해야 합니다. 기본적으로 비활성화되어 있으므로, 엑셀을 연 뒤 옵션 화면으로 이동해 "리본 메뉴에 개발 도구 탭 표시" 항목에 체크하면 됩니다.

2단계: Visual Basic 편집기 열기
개발 도구 탭을 클릭한 후 "Visual Basic" 아이콘을 누르면 Visual Basic 편집기가 실행됩니다.

또는 키보드 단축키 "Alt + F11"을 눌러도 됩니다. 이 단축키를 사용하면 개발 도구 탭을 활성화하지 않아도 바로 편집기를 열 수 있어 더욱 편리합니다.
3단계: 모듈 삽입
준비가 끝났으면 프로젝트 창에서 "Microsoft Excel 개체"를 마우스 오른쪽 버튼으로 클릭하고, "삽입(Insert)" → "모듈(Module)"을 차례로 선택합니다.

그러면 코드를 작성할 수 있는 빈 모듈 창이 열립니다.

4단계: 함수 코드 작성
코드를 작성하기 전에 사용자 지정 함수 생성 시 따라야 할 기본 문법을 이해해야 합니다. 기본 구조는 다음과 같습니다.
Function myFunction (인수) As 반환 형식
myFunction = 계산식
End Function
일반 프로그래밍 언어와 달리 별도의 'Return' 문이 없다는 점이 특징입니다. 함수 이름에 결과값을 직접 할당하면 그 값이 그대로 반환됩니다.
새로 열린 모듈 창에 코드를 입력합니다. 예를 들어, 전달받은 값의 8%를 계산해 주는 함수 "FeesCalculate"를 만들어 보겠습니다. 결과값이 소수일 수 있으므로 반환 형식은 "Double"로 지정했습니다. 작성한 코드가 VBA 문법을 올바르게 따르고 있는지 확인하세요.

5단계: 매크로 포함 통합 문서(.xlsm)로 저장
이제 엑셀 통합 문서를 저장할 차례입니다. 반드시 매크로 포함 형식인 '.xlsm' 확장자로 저장해야 합니다. 다른 확장자로 저장하면 오류가 발생하니 주의하세요.

이것으로 준비 완료입니다!
사용자 지정 함수 활용하기
이제 워크시트에서 일반 엑셀 함수와 동일하게 "=함수명" 형식으로 사용자 지정 함수를 호출할 수 있습니다. 셀에 "="를 입력하기 시작하면 내장 함수 목록과 함께 방금 만든 함수도 함께 표시됩니다.

실제 적용 예시는 아래와 같습니다.

사용자 지정 엑셀 함수의 한계
엑셀 사용자 지정 함수는 엑셀 환경 자체를 변경할 수 없기 때문에 몇 가지 제약이 있습니다. 사용자 지정 함수로는 다음 작업을 수행할 수 없습니다.
- 워크시트에서 셀 삽입, 서식 지정 또는 삭제
- 다른 셀의 값 변경
- 통합 문서에 이름 정의 추가
- 통합 문서에서 시트 이름 변경, 삭제, 이동 또는 추가
이 외에도 여러 가지 제약 사항이 있으며, 위에 소개한 것들은 대표적인 예입니다.
위의 간단한 단계만 따라 하면 누구나 자신만의 엑셀 사용자 지정 함수를 손쉽게 만들 수 있습니다.
