본문 바로가기

업무 프로그램/MS 엑셀

엑셀 사용자 정의 함수를 만들어 점수별 등급 매기기(VBA)

목차

     

    지난 시간에 사용자 정의 함수를 만드는 방법을 알아봤는데 이번에는 그 함수를 어떻게 실행할지에 대한 내용을 채워 넣어보겠습니다. 지난 시간에 한 부분까지는 함수를 만들기만 했을 뿐 내용이 없기 때문에 아무런 동작을 하지 않았습니다. 오늘은 "수학등급"이라는 함수가 어떻게 동작해야 할지 내용을 입력해보겠습니다. 함수의 기본틀을 만드는 방법은 아래 포스팅을 참고해주시기 바랍니다.

     

    엑셀 사용자 정의 함수를 만들기(VBA) (tistory.com)

     

    엑셀 사용자 정의 함수를 만들기(VBA)

    사용자 정의 함수를 사용하기 위해서는 VBA를 이용해야 합니다. VBA를 이용하기 위한 최초 설정 방법은 아래 포스팅에서 참고해 주시기 바랍니다. 최초 설정을 해주셔야 이후 진행이 가능합니다.

    dolpali.tistory.com

     


    1. 등급을 분류 할 수 있도록 함수 내용 작성하기

    등급은 마음대로 나누시면 되겠지만 오늘 예시에서는 95이상은 1등급, 85이상은 2등급, 75이상은 3등급, 65이상은 4등급, 나머지는 5등급으로 표시해보도록 하겠습니다.

     

    등급을 분류 할 수 있도록 함수 내용 작성하기
    등급을 분류 할 수 있도록 함수 내용 작성하기

     

    내용작성은 아주 간단한데 이전에 만들었던 함수에 위 이미지처럼 내용을 추가하기만 하면 되기 때문입니다.

     

    Public Function 수학등급(점수)
    
        If 점수 >= 95 Then
            수학등급 = 1
        ElseIf 점수 >= 85 Then
            수학등급 = 2
        ElseIf 점수 >= 75 Then
            수학등급 = 3
        ElseIf 점수 >= 65 Then
            수학등급 = 4
        Else
            수학등급 = 5
        End If
    
    End Function

     

    함수에 대해 간단히 설명드리겠습니다.

     

    등급을 분류 할 수 있도록 함수 내용 작성하기-함수 설명
    등급을 분류 할 수 있도록 함수 내용 작성하기-함수 설명

     

    함수 형식에 대한 설명인데 어려운 부분은 없으실 것입니다. (점수) 부분이 이해가 안가실 수 있지만 다음 챕터에서 설명드리겠습니다.

     

    등급을 분류 할 수 있도록 함수 내용 작성하기-함수 작성
    등급을 분류 할 수 있도록 함수 내용 작성하기-함수 작성

     

     

    처음보면 어려워 보이실지도 모르지만 사실 If~Then의 반복이여서 어렵지 않습니다. 수학등급=1은 수학등급에 1을 대입한다는 뜻입니다.

     


    2. 사용자 정의 함수 사용하기

    사용자 정의 함수 사용하기
    사용자 정의 함수 사용하기

     

    1. [함수 삽입] 버튼을 클릭합니다.

    2. 범주 선택에서 [사용자 정의]를 클릭합니다.

     

    사용자 정의 함수 사용하기-함수 선택
    사용자 정의 함수 사용하기-함수 선택

     

    3. 사용할 함수를 선택합니다.

    4. [확인]을 클릭합니다.

     

    사용자 정의 함수 사용하기-함수 인수
    사용자 정의 함수 사용하기-함수 인수

     

    5. 인수를 입력합니다. 입력할 셀을 클릭하면 입력이 됩니다.

    6. [확인]을 클릭합니다.

     

    사용자 정의 함수 사용하기-채우기
    사용자 정의 함수 사용하기-채우기

     

    7. [채우기 핸들]을 클릭합니다.

     

    사용자 정의 함수 사용하기-실행 흐름
    사용자 정의 함수 사용하기-실행 흐름

     

    등급이 잘 출력되는 것을 볼 수 있습니다. B열의 점수가 "수학등급"이라는 함수에 전달되어 로직을 거쳐서 1이라는 값이 리턴된 것입니다.