Excel에서 사용자 지정 함수 만들기

Excel에는 다양 한 기본 제공 워크시트 함수가 있지만 수행 하는 모든 유형의 계산에는 함수가 없기 때문입니다. Excel 디자이너는 모든 사용자의 계산 요구를 예상할 수 없습니다. 대신이 문서에서 설명 하는 사용자 지정 함수를 만들 수 있는 기능이 Excel에 제공 됩니다.

Windows 용 Excel, Mac 용 Excel 또는 웹용 Excel 에서 실행할 수 있는 Javascript 사용자 지정 함수를 만드는 방법에 대 한 정보를 찾고 계십니까? Excel 사용자 지정 함수 개요문서를 참조 하세요.

매크로와 같은 사용자 지정 함수는 vba (Visual Basic for applications) 프로그래밍 언어를 사용 합니다. 두 가지 중요 한 방법으로 매크로와 다릅니다. 먼저 Sub 프로시저 대신 함수 프로시저를 사용 합니다. 즉, sub 문 대신 Function 문으로 시작 하 고 end Sub대신 end 함수 를 사용 하 여 끝납니다. 둘째로, 작업을 수행 하는 대신 계산을 실행 합니다. 범위를 선택 하는 문과 같은 특정 종류의 문은 사용자 지정 함수에서 제외 됩니다. 이 문서에서는 사용자 지정 함수를 만들고 사용 하는 방법에 대해 설명 합니다. 함수 및 매크로를 만들려면 Excel과는 별도의 새 창에서 열리는 VBE (Visual Basic Editor)를 사용 하 여 작업 합니다.

회사에서 제품 판매 시 10%의 수량 할인을 제공 한다고 가정 하 여 100 단위를 초과 하는 주문을 제공 하는 경우 다음 단락에서는이 할인을 계산 하는 함수에 대해 설명 합니다.

아래 예제에서는 각 항목, 수량, 가격, 할인율 (있는 경우), 그리고 결과적으로 연장 된 금액을 나열 하는 주문 폼을 보여 줍니다.

사용자 지정 함수가 없는 order 폼 예제

이 통합 문서에서 사용자 지정 할인 함수를 만들려면 다음 단계를 따릅니다.

  1. Alt + f 11을 눌러 Visual Basic Editor를 열고 (Mac에서 FN + Alt + F11키 누름) > 모듈삽입 을 클릭 합니다. Visual Basic Editor의 오른쪽에 새 모듈 창이 나타납니다.

  2. 다음 코드를 복사 하 여 새 모듈에 붙여넣습니다.

    Function DISCOUNT(quantity, price)
       If quantity >=100 Then
         DISCOUNT = quantity * price * 0.1
       Else
         DISCOUNT = 0
       End If
     
     DISCOUNT = Application.Round(Discount, 2)
    End Function
    

참고: 코드를 읽기 쉽게 만들려면 Tab 키를 사용 하 여 줄을 들 여 쓸 수 있습니다. 들여쓰기는 사용자의 편의를 위한 것 이며, 코드는이를 포함 하거나 사용 하지 않고 실행 되므로 선택 사항입니다. 들여쓴 줄을 입력 한 후에는 Visual Basic Editor에서 다음 줄이 유사 하 게 들여쓰기 되었다고 가정 합니다. 탭 문자 하나 (즉, 왼쪽)로 이동 하려면 Shift + tab을 누릅니다.

이제 새 할인 기능을 사용할 준비가 되었습니다. Visual Basic Editor를 닫고 G7 셀을 선택한 후 다음을 입력 합니다.

= 할인율 (D7, E7)

Excel에서 200 단위에 대해 $47.50 단위 당 10% 할인이 계산 되 고 $950.00이 반환 됩니다.

VBA 코드의 첫 번째 줄에서 할인 함수에는 두 개의 인수, 수량가격이필요 함을 나타냅니다. 워크시트 셀에서 함수를 호출 하는 경우에는 두 개의 인수를 포함 해야 합니다. 수식 = 할인율 (D7, E7)에서 D7은 quantity 인수이 고 E7는 price 인수입니다. 이제 G8: G13에 할인 수식을 복사 하 여 아래에 표시 된 결과를 얻을 수 있습니다.

Excel에서이 함수 프로시저를 해석 하는 방법을 살펴보겠습니다. Enter 키를 누르면 Excel에서 현재 통합 문서에 이름 할인이 있는지 검색 하 여 VBA 모듈에서 사용자 지정 함수를 찾습니다. 괄호, 수량가격으로 묶인 인수 이름은 할인의 계산 기준 값에 대 한 자리 표시자입니다.

사용자 지정 함수가 있는 주문 폼 예제

다음 코드 블록의 If 문은 quantity 인수를 검사 하 고 판매 된 항목 수가 100 보다 크거나 같은지 여부를 확인 합니다.

If quantity >= 100 Then
 DISCOUNT = quantity * price * 0.1
Else
 DISCOUNT = 0
End If

판매 된 항목 수가 100 보다 크거나 같으면 VBA에서는 quantity 값을 가격 값으로 곱한 다음 그 결과에 0.1을 곱한 다음 명령문을 실행 합니다.

Discount = quantity * price * 0.1

결과는 변수 할인율으로 저장 됩니다. 변수에 값을 저장 하는 VBA 문은 등호 기호 오른쪽의 식을 계산 하 고 그 결과를 왼쪽의 변수 이름에 할당 하는 대입문 이라고 합니다. 변수 할인이 함수 프로시저와 같은 이름을 가지 므로 변수에 저장 된 값이 할인율 함수를 호출한 워크시트 수식으로 반환 됩니다.

Quantity 가 100 보다 작은 경우 VBA는 다음 명령문을 실행 합니다.

Discount = 0

마지막으로, 다음 문은 할인율 변수에 할당 된 값을 소수 두 자리로 반올림 합니다.

Discount = Application.Round(Discount, 2)

VBA에는 ROUND 함수가 없지만 Excel에서는 그렇지 않습니다. 따라서이 명령문에서 ROUND를 사용 하기 위해 VBA는 응용 프로그램 개체 (Excel)에서 Round 메서드 (함수)를 찾도록 지시 합니다. 단어를 둥글게 하기 전에 word 응용 프로그램 을 추가 하 여이 작업을 수행 합니다. VBA 모듈에서 Excel 함수에 액세스 해야 할 때마다이 구문을 사용 합니다.

사용자 지정 함수는 함수 문으로 시작 하 고 End 함수 문으로 끝나야 합니다. 함수 문은 함수의 이름 외에도 일반적으로 하나 이상의 인수를 지정 합니다. 그러나 인수 없이 함수를 만들 수 있습니다. Excel에는 다양 한 기본 제공 함수 (예: RAND와 현재는 인수를 사용 하지 않음)가 포함 되어 있습니다.

함수 명령문 다음에 함수 프로시저에는 의사 결정을 하 고 함수에 전달 된 인수를 사용 하 여 계산을 수행 하는 하나 이상의 VBA 문이 포함 됩니다. 마지막으로 function 프로시저의 어딘가에는 함수와 동일한 이름을 가진 변수에 값을 할당 하는 문을 포함 해야 합니다. 이 값은 함수를 호출 하는 수식으로 반환 됩니다.

사용자 지정 함수에서 사용할 수 있는 VBA 키워드 수가 매크로에서 사용할 수 있는 수보다 작습니다. 사용자 지정 함수는 워크시트의 수식이 나 다른 VBA 매크로 또는 함수에 사용 되는 식에 값을 반환 하는 것 이외의 다른 작업을 수행할 수 없습니다. 예를 들어 사용자 지정 함수는 창 크기를 조정 하거나, 셀에서 수식을 편집 하거나, 셀의 텍스트에 대 한 글꼴, 색 또는 무늬 옵션을 변경할 수 없습니다. 함수 프로시저에 이러한 종류의 "동작" 코드를 포함 하는 경우 함수는 #VALUE를 반환 합니다. 오류가 반환될 수 있습니다.

함수 프로시저에서 수행할 수 있는 작업 (계산을 수행 하는 것은 제외)이 대화 상자를 표시 합니다. 함수를 실행 하는 사용자의 입력을 가져오는 방법으로 사용자 지정 함수에서 InputBox 문을 사용할 수 있습니다. MsgBox 문은 사용자에 게 정보를 전달 하는 수단으로 사용할 수 있습니다. 사용자 지정 대화 상자를 사용할 수도 있지만, 이는이 소개의 범위를 벗어나는 주제입니다.

간단한 매크로와 사용자 지정 함수도 읽기 어려울 수 있습니다. 메모 형식으로 설명 텍스트를 입력 하 여 이해 하기 쉽게 만들 수 있습니다. 설명 텍스트 앞에 아포스트로피를 사용 하 여 메모를 추가 합니다. 예를 들어 다음 예제에서는 메모가 포함 된 할인율 함수를 보여 줍니다. 이와 같은 주석을 추가 하면 사용자 또는 다른 사용자가 VBA 코드를 시간이 지남에 따라 쉽게 유지 관리할 수 있습니다. 나중에 코드를 변경 해야 하는 경우에는 원래 작업을 이해 하는 데 시간이 더 쉬워집니다.

메모가 포함 된 VBA 함수 예제

A i a i a a a i a a a a a a i a a a i a a a i a a a a i a a a i a a a i a a a i a a a i a a a i 전체적으로 긴 목적을 설명 하는 설명과 인라인 주석을 사용 하 여 개별 문을 문서화할 수 있는 코드 블록을 상대적으로 길게 시작 합니다.

매크로와 사용자 지정 함수를 문서화 하는 또 다른 방법은 설명 이름을 제공 하는 것입니다. 예를 들어 매크로 레이블이름을 입력 하는 대신, 매크로의 역할을 하는 보다 구체적으로 설명 하도록 monthlabels 에 이름을 입력할 수 있습니다. 매크로 및 사용자 지정 함수에 설명적인 이름을 사용 하면 특히, 비슷하지만 동일 하지 않은 프로시저를 만드는 경우를 비롯 하 여 여러 프로시저를 만들었을 때 유용 합니다.

매크로와 사용자 지정 함수를 문서화 하는 방법은 개인적인 취향에 따라 다를 수 있습니다. 중요 한 것은 몇 가지 문서화 된 방법을 채택 하 여 일관성 있게 사용 하는 것입니다.

사용자 지정 함수를 사용 하려면 함수를 만든 모듈이 포함 된 통합 문서가 열려 있어야 합니다. 해당 통합 문서가 열려 있지 않으면 #NAME에 도달 하는 것이 좋습니다. 함수를 사용 하려고 할 때 오류가 발생 합니다. 다른 통합 문서에서 함수를 참조 하는 경우 함수 이름 앞에 함수가 있는 통합 문서 이름을 붙여야 합니다. 예를 들어, 이름이 .xlsb 인 통합 문서에 할인율 이라는 함수를 만들고 다른 통합 문서에서 해당 함수를 호출 하는 경우 = 할인율 ()이 아니라 = Personal! 할인율 ()만 입력 해야 합니다.

함수 삽입 대화 상자에서 사용자 지정 함수를 선택 하 여 몇 가지 키 입력 및 가능한 입력 오류를 저장할 수 있습니다. 사용자 지정 함수는 사용자 정의 범주에 나타납니다.

함수 삽입 대화 상자

사용자 지정 함수를 항상 사용할 수 있도록 만드는 방법은 별도의 통합 문서에 저장 한 다음 해당 통합 문서를 추가 기능으로 저장 하는 것입니다. 그런 다음 Excel을 실행할 때마다 추가 기능을 사용 하도록 설정할 수 있습니다. 이 작업을 수행 하는 방법은 다음과 같습니다.

  1. 필요한 함수를 만든 후 파일 > 다른 이름으로 저장을 클릭 합니다.

    Excel 2007 에서 Microsoft Office 단추를 클릭 하 고 다른 이름으로 저장 을 클릭 합니다.

  2. 다른 이름으로 저장 대화 상자에서 파일 형식 드롭다운 목록을 열고 Excel 추가 기능을 선택 합니다. AddIns 폴더에 있는 알기 쉬운 이름 (예: myfunctions)으로 통합 문서를 저장 합니다. 다른 이름으로 저장 대화 상자는 해당 폴더를 제안 하므로 기본 위치를 그대로 사용 하기만 하면 됩니다.

  3. 통합 문서를 저장 한 후에는 파일 > Excel 옵션을 클릭 합니다.

    Excel 2007 에서 Microsoft Office 단추를 클릭 하 고 Excel 옵션을 클릭 합니다.

  4. Excel 옵션 대화 상자에서 추가 기능 범주를 클릭 합니다.

  5. 관리 드롭다운 목록에서 Excel 추가 기능을 선택 합니다. 그런 다음 이동 단추를 클릭 합니다.

  6. 추가 기능 대화 상자에서 아래와 같이 통합 문서를 저장 하는 데 사용한 이름 옆에 있는 확인란을 선택 합니다.

    추가 기능 대화 상자

  1. 필요한 함수를 만든 후 파일 > 다른 이름으로 저장을 클릭 합니다.

  2. 다른 이름으로 저장 대화 상자에서 파일 형식 드롭다운 목록을 열고 Excel 추가 기능을 선택 합니다. Myfunctions등의 알기 쉬운 이름으로 통합 문서를 저장 합니다.

  3. 통합 문서를 저장 한 후 도구 > Excel 추가 기능을 클릭 합니다.

  4. 추가 기능 대화 상자에서 찾아보기 단추를 선택 하 여 추가 기능을 찾고 열기를 클릭 한 다음 사용 가능한 추가 기능 상자에서 추가 기능 옆의 상자를 선택 합니다.

이 단계를 수행한 후에는 Excel을 실행할 때마다 사용자 지정 함수를 사용할 수 있습니다. 함수 라이브러리에 추가 하려는 경우 Visual Basic Editor로 돌아갑니다. Visual Basic Editor 프로젝트 탐색기에서 VBAProject 제목 아래에 있는 경우 추가 기능 파일 뒤에 이름이 지정 된 모듈이 표시 됩니다. 추가 기능에는 확장명이 xlam으로 표시 됩니다.

VBE의 명명된 모듈

프로젝트 탐색기에서 해당 모듈을 두 번 클릭 하면 Visual Basic Editor에서 함수 코드가 표시 됩니다. 새 함수를 추가 하려면 코드 창에서 마지막 함수를 종료 하는 End 함수 문 뒤에 삽입 지점을 놓고 입력을 시작 합니다. 이 방법으로 함수를 필요한 만큼 만들 수 있으며, 함수 삽입 대화 상자의 사용자 정의 범주에서 항상 사용할 수 있게 됩니다.

이 콘텐츠는 원래 Microsoft Office Excel 2007 내부에서 책의 일부로 닷지 및 Craig Stinson을 표시 하 여 작성 했습니다. 이후 버전의 Excel에도 적용 하도록 업데이트 되었습니다.

추가 지원

Excel 기술 커뮤니티의 전문가에게 질문하고, Answers 커뮤니티에서 지원을 받고, Excel 사용자 의견에서 새로운 기능이나 개선 사항을 제안해 보세요.

참고:  이 페이지는 자동화를 통해 번역되었으며 문법 오류나 부정확한 설명을 포함할 수 있습니다. 이 목적은 콘텐츠가 사용자에게 유용하다는 것입니다. 정보가 도움이 되는지 알려주세요. 참조할 수 있는 영문 문서가 여기 있습니다.

Office 기술 확장
교육 살펴보기
새로운 기능 우선 가져오기
Office Insider 참여

이 정보가 유용한가요?

의견 주셔서 감사합니다!

피드백을 주셔서 감사합니다. Office 지원 에이전트와 연락하는 것이 도움이 될 것 같습니다.

×