Categories: 미분류

엑셀365 사용자 정의 함수(UDF) 쉽게 만드는 방법

엑셀365에는 수백 개의 기본 내장 함수가 있지만, 실무에서는 내장 함수만으로 부족한 상황이 종종 발생합니다. 이럴 땐 VBA를 활용해 ‘사용자 정의 함수(UDF, User Defined Function)’를 만들어 직접 해결할 수 있습니다.

UDF는 엑셀 함수처럼 셀에 입력하여 사용할 수 있으며, 복잡한 계산이나 반복되는 로직을 간단하게 처리해줍니다. 이 포스팅에서는 UDF의 개념부터 작성, 실무 예제, 고급 활용 팁까지 쉽게 정리해드릴게요.


1. 사용자 정의 함수(UDF)란?

**UDF(User Defined Function)**는 사용자가 직접 만든 엑셀 함수입니다.
기존 함수와 동일하게 셀에 =함수이름() 형태로 입력하며,
복잡한 계산 로직을 짧고 간결한 함수로 재사용할 수 있도록 도와줍니다.

항목내용
작성 위치VBA 편집기(Module)
실행 방식셀에 함수처럼 입력
장점반복 로직 단순화, 가독성 향상, 유지보수 용이
단점매크로 보안 설정 필요, 다른 사용자와 공유 시 주의 필요

2. UDF 만들기 기본 과정

① 개발 도구 활성화

  • 파일 > 옵션 > 리본 사용자 지정 > 개발 도구 체크

② VBA 편집기 열기

  • 개발 도구 > Visual Basic 또는 단축키 Alt + F11

③ 모듈 삽입

  • 삽입 > 모듈 클릭

④ 함수 작성

예시:

Function 제곱(x As Double) As Double
    제곱 = x * x
End Function

엑셀 셀에 입력:

=제곱(5)  → 결과: 25

3. 실무 예제별 사용자 정의 함수

예제 1: 세금 포함 가격 계산 함수

Function 세금포함가격(금액 As Double, 세율 As Double) As Double
    세금포함가격 = 금액 * (1 + 세율)
End Function
=세금포함가격(100000, 0.1) → 결과: 110000

예제 2: 한글 이름 성과 이름 분리

Function 이름분리(이름 As String, 구분 As String) As String
    If 구분 = "성" Then
        이름분리 = Left(이름, 1)
    ElseIf 구분 = "이름" Then
        이름분리 = Mid(이름, 2)
    Else
        이름분리 = ""
    End If
End Function
=이름분리("홍길동", "성") → "홍"  
=이름분리("홍길동", "이름") → "길동"

예제 3: 이메일 아이디 추출 함수

Function 이메일ID(주소 As String) As String
    이메일ID = Left(주소, InStr(1, 주소, "@") - 1)
End Function
=이메일ID("kim@company.com") → "kim"

4. UDF 사용 시 주의사항

주의점설명
파일 저장 형식반드시 .xlsm 형식으로 저장해야 VBA 포함됨
자동 계산UDF는 외부 함수보다 느릴 수 있으니 가급적 간결하게
다른 PC에서 사용매크로 보안 설정이 열려 있어야 작동 가능
디버깅F8로 단계별 실행 가능, MsgBox, Debug.Print로 중간값 확인 가능

5. 고급 활용: 다중 인수 처리

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를 사용하면 함수에 가변 개수 인수 전달 가능


6. 사용자 정의 함수 삭제 또는 수정 방법

  1. Alt + F11 → VBA 편집기 열기
  2. 해당 모듈 선택
  3. 함수 코드 수정 또는 삭제
  4. 저장 후 엑셀로 돌아가기

Q&A

Q. 함수가 작동하지 않아요. 이유가 뭔가요?

  • 파일 확장자가 .xlsm인지 확인
  • 함수 이름에 한글을 썼을 경우 영문보다 안정적
  • 셀에 직접 수식 입력 시 =로 시작했는지 확인
  • 매크로 보안 설정 확인: 파일 > 옵션 > 보안 센터 > 설정

Q. UDF에서 다른 셀을 참조할 수 있나요?

가능하지만, 셀 수정을 UDF 내에서 수행하는 건 제한됩니다.
UDF는 “결과만 반환”하는 함수이기 때문입니다.

Function 셀합(A As Range, B As Range) As Double
    셀합 = A.Value + B.Value
End Function

=셀합(A1, B1)로 사용 가능


Q. 다른 사용자와 UDF를 공유하려면?

  • 파일을 .xlsm으로 저장해서 공유
  • UDF를 ‘추가 기능(Add-In)’으로 만들어 배포할 수도 있음

공유 시 주의: 상대방 PC에서도 매크로 활성화 상태여야 사용 가능


엑셀365의 사용자 정의 함수(UDF)는 반복 계산을 효율적으로 줄이고, 실무에 딱 맞는 로직을 직접 구현할 수 있는 매우 강력한 기능입니다. 수식이 복잡하거나, 반복되는 조건 처리, 텍스트 조작 등이 많다면, 오늘부터 나만의 함수를 만들어 엑셀을 더 똑똑하게 활용해보세요!

huniverse5

Recent Posts

엑셀365 ActiveX 컨트롤로 업무 효율 극대화하기

엑셀365에서 ActiveX 컨트롤은 사용자가 더욱 정교하고 인터랙티브한 사용자 인터페이스(UI)를 구성할 수 있도록 도와주는 고급 도구입니다.…

1개월 ago

엑셀365 폼 컨트롤로 양식 자동화하기 실무 가이드

엑셀365 폼 컨트롤로 양식 자동화하기 실무 가이드 엑셀365의 폼 컨트롤(Form Controls) 기능은 사용자가 데이터 입력을…

1개월 ago

엑셀 매크로로 반복 업무 자동화하는 실전 예제

엑셀에서 자주 반복하는 작업, 예를 들어 보고서 포맷 정리, 데이터 복사 및 붙여넣기, 시트 생성,…

1개월 ago

엑셀365 VBA 매크로 시작부터 고급 활용까지 완벽 가이드

엑셀365에서 VBA(Visual Basic for Applications) 매크로는 반복되는 작업을 자동화하고, 사용자의 클릭이나 입력에 반응하여 맞춤형 엑셀…

1개월 ago

엑셀365 슬라이서 기능으로 피벗 테이블 분석 효율 높이기

엑셀365 슬라이서 기능으로 피벗 테이블 분석 효율 높이기 엑셀365의 슬라이서(Slicer) 기능은 피벗 테이블이나 표에서 필터링을…

1개월 ago

엑셀365 데이터 가져오기 및 외부 데이터 연결법 총정리

엑셀365 데이터 가져오기 및 외부 데이터 연결법 총정리 엑셀365는 단순한 계산 툴을 넘어, 다양한 외부…

1개월 ago