엑셀365에는 수백 개의 기본 내장 함수가 있지만, 실무에서는 내장 함수만으로 부족한 상황이 종종 발생합니다. 이럴 땐 VBA를 활용해 ‘사용자 정의 함수(UDF, User Defined Function)’를 만들어 직접 해결할 수 있습니다.
UDF는 엑셀 함수처럼 셀에 입력하여 사용할 수 있으며, 복잡한 계산이나 반복되는 로직을 간단하게 처리해줍니다. 이 포스팅에서는 UDF의 개념부터 작성, 실무 예제, 고급 활용 팁까지 쉽게 정리해드릴게요.
**UDF(User Defined Function)**는 사용자가 직접 만든 엑셀 함수입니다.
기존 함수와 동일하게 셀에 =함수이름()
형태로 입력하며,
복잡한 계산 로직을 짧고 간결한 함수로 재사용할 수 있도록 도와줍니다.
항목 | 내용 |
---|---|
작성 위치 | VBA 편집기(Module) |
실행 방식 | 셀에 함수처럼 입력 |
장점 | 반복 로직 단순화, 가독성 향상, 유지보수 용이 |
단점 | 매크로 보안 설정 필요, 다른 사용자와 공유 시 주의 필요 |
파일 > 옵션 > 리본 사용자 지정 > 개발 도구
체크개발 도구 > Visual Basic
또는 단축키 Alt + F11
삽입 > 모듈
클릭예시:
Function 제곱(x As Double) As Double
제곱 = x * x
End Function
엑셀 셀에 입력:
=제곱(5) → 결과: 25
Function 세금포함가격(금액 As Double, 세율 As Double) As Double
세금포함가격 = 금액 * (1 + 세율)
End Function
=세금포함가격(100000, 0.1) → 결과: 110000
Function 이름분리(이름 As String, 구분 As String) As String
If 구분 = "성" Then
이름분리 = Left(이름, 1)
ElseIf 구분 = "이름" Then
이름분리 = Mid(이름, 2)
Else
이름분리 = ""
End If
End Function
=이름분리("홍길동", "성") → "홍"
=이름분리("홍길동", "이름") → "길동"
Function 이메일ID(주소 As String) As String
이메일ID = Left(주소, InStr(1, 주소, "@") - 1)
End Function
=이메일ID("kim@company.com") → "kim"
주의점 | 설명 |
---|---|
파일 저장 형식 | 반드시 .xlsm 형식으로 저장해야 VBA 포함됨 |
자동 계산 | UDF는 외부 함수보다 느릴 수 있으니 가급적 간결하게 |
다른 PC에서 사용 | 매크로 보안 설정이 열려 있어야 작동 가능 |
디버깅 | F8로 단계별 실행 가능, MsgBox , Debug.Print 로 중간값 확인 가능 |
Function 평균값(ParamArray nums() As Variant) As Double
Dim i As Long, 합계 As Double
For i = LBound(nums) To UBound(nums)
합계 = 합계 + nums(i)
Next i
평균값 = 합계 / (UBound(nums) - LBound(nums) + 1)
End Function
=평균값(10, 20, 30, 40) → 25
설명: ParamArray를 사용하면 함수에 가변 개수 인수 전달 가능
Alt + F11
→ VBA 편집기 열기.xlsm
인지 확인=
로 시작했는지 확인파일 > 옵션 > 보안 센터 > 설정
가능하지만, 셀 수정을 UDF 내에서 수행하는 건 제한됩니다.
UDF는 “결과만 반환”하는 함수이기 때문입니다.
Function 셀합(A As Range, B As Range) As Double
셀합 = A.Value + B.Value
End Function
→ =셀합(A1, B1)
로 사용 가능
.xlsm
으로 저장해서 공유공유 시 주의: 상대방 PC에서도 매크로 활성화 상태여야 사용 가능
엑셀365의 사용자 정의 함수(UDF)는 반복 계산을 효율적으로 줄이고, 실무에 딱 맞는 로직을 직접 구현할 수 있는 매우 강력한 기능입니다. 수식이 복잡하거나, 반복되는 조건 처리, 텍스트 조작 등이 많다면, 오늘부터 나만의 함수를 만들어 엑셀을 더 똑똑하게 활용해보세요!
엑셀365에서 ActiveX 컨트롤은 사용자가 더욱 정교하고 인터랙티브한 사용자 인터페이스(UI)를 구성할 수 있도록 도와주는 고급 도구입니다.…
엑셀365 폼 컨트롤로 양식 자동화하기 실무 가이드 엑셀365의 폼 컨트롤(Form Controls) 기능은 사용자가 데이터 입력을…
엑셀365에서 VBA(Visual Basic for Applications) 매크로는 반복되는 작업을 자동화하고, 사용자의 클릭이나 입력에 반응하여 맞춤형 엑셀…
엑셀365 슬라이서 기능으로 피벗 테이블 분석 효율 높이기 엑셀365의 슬라이서(Slicer) 기능은 피벗 테이블이나 표에서 필터링을…
엑셀365 데이터 가져오기 및 외부 데이터 연결법 총정리 엑셀365는 단순한 계산 툴을 넘어, 다양한 외부…