본문 바로가기

엑셀로 풀어가는 세상

레이의 VBA정복기6- 숫자를 한글 또는 한자로 변환하는 법

이미 '숫자를 문자로' 변환하는 엑셀 NUMBERSTRING 함수에 대해서 글을 올린 적이 있습니다.
그럼에도 불구하고 숫자 변환 포스트를 별도로 작성하는 이유는 엑셀 VBA 학습차원에서 진행하는 것 입니다. 특히 엑셀에서 사용자 정의 함수를 어떻게 설정하는지를 알고자 하는 것 입니다.
그리고 다음에 올릴 예정인 포스트와 연관되어 있습니다.

먼저 '숫자를 한글 또는 한자로 변환' 하기 위해 필요한 VBA코드는 아래와 같습니다.
개인적으로 참고하는 책에서도 이번 변환에 대한 설명이 있어 그대로 입력했는데 뭐가 잘못되었는지 제대로 되지 않더군요. 그래서 다음의 지식 코너를 검색해서 아래와 같이 코드를 구했습니다.


Public Function ReadNum(Num, ReadType)
    Dim L, k, i, j, n, v As Integer
    Dim Tg1, Tg2, Tg3 As Variant
    Dim g1, g2, g3 As Integer
    Dim Ans As String
    

If ReadType = 1 Then
        Tg1 = Array("", "壹", "貳", "參", "四", "五", "六", "七", "八", "九")
        Tg2 = Array("", "拾", "百", "千")
        Tg3 = Array("", "萬", "億", "兆")
    Else
        Tg1 = Array("", "일", "이", "삼", "사", "오", "육", "칠", "팔", "구")
        Tg2 = Array("", "십", "백", "천")
        Tg3 = Array("", "만", "억", "조")
    End If
        End If
        Ans = Tg1(n) + Tg2(g2) + Tg3(g3) + Ans
    Next i
    ReadNum = Ans
End Function


사용자 정의 함수 설정 방법


1. 엑셀을 열어 새 문서를 하나 만듭니다. ALT+F11을 눌러 VB화면을 엽니다.
2. VB화면에서 '삽입'메뉴의 '모듈'을 클릭합니다.

3. 2번까지의 과정을 통해서 'Module1'이라는 이름의 모듈이 하나 생성 됩니다.

4. 이번에는 '삽입'메뉴에서 '프로시저'를 클릭합니다.
그러면 '프로시저 추가'라는 팝업창이 뜹니다.
여기서 이름(N)에는 위의 VBA코드 칸에 굵은 빨간색으로 표기된 'ReadNum'을 입력합니다.
형식에는 사용자 정의 함수 프로시저인 'Function(F)'를 체크 합니다.

5. 그러면 아래와 같이 문구가 자동 생성됩니다.
다른 거 생각하지 말고, 아래의 문구를 삭제합니다.
그리고 위의 VBA코드 전체를 복사해서 붙여넣기 합니다.

6. 5번 과정을 끝내면 아래와 같이 나타납니다.



사용자 정의 함수를 엑셀에서 이용하기


1. 먼저 아무 셀에 숫자를 입력해 봅니다.
그리고 커서를 옆 셀로 이동한 후 '함수 마법사'을 클릭 합니다.

2. '함수 마법사' 팝업창이 나타납니다.
'범주선택(C)'에 '사용자 정의'를 선택하면, '함수 선택(N)'란의 좀전에 설정했던 'ReadNum'라는 사용자 정의 함수를 선택합니다.

3. 2번 과정이 마치며 또 다시 아래와 같은 팝업창이 뜹니다.
'Num'에는 숫자가 기록된 셀 주소를 입력합니다. ReadType에는 '0'또는 '1'을 입력합니다.
(0 : 한글 표기, 1 : 한자 표기)

4. 결과 화면 입니다.
반응형