반응형

안녕하세요.

 

표시 형식 기능 중에 숫자를 한글이나 한자로 나타내는 기능이 있습니다.

견적서 같은 문서를 작성할 때 기록된 숫자를 변조할 수 없도록 이중으로 표시하는 기능이죠.

 

숫자를 영어로 나타내는 방법도 알아보겠습니다.

 

실습 파일 다운로드

숫자를 영어로 나타내기.xlsm
0.02MB

[B2] 셀에 나타낼 숫자를 입력했습니다.

[D2] 셀에 한글로 나타내 보겠습니다.

 

[D2] 셀에 커서를 두고 =(이퀄)을 입력한 뒤 [B2] 셀을 선택해 수식을 나타냅니다.

[D2] 셀에 커서를 두고 단축키 <Ctrl + 1>을 눌러 셀 서식 대화상자를 나타냅니다.

[범주]에서 '기타'를 선택한 뒤 '숫자(한글)'을 선택합니다.

[확인]을 누릅니다.

숫자를 한글이나 한자로 나타내는 방법은 엑셀에서 기본 기능으로 제공하기 때문에 쉽습니다.

 

숫자를 영어로 나타내는 방법은 엑셀에 없습니다.

사용자 정의 함수를 만들어 사용해야 합니다.

 

찾는 사람이 여럿 있는지 구글 검색을 해보니 Microsoft 지원 웹사이트에 답변이 있습니다.

 

단어를 숫자 변환

숫자 SpellNumber sample 함수를 사용 하 여 Excel 스프레드시트의 영어 단어를 변환 하는 방법을 알아봅니다.

support.microsoft.com

실습 파일에 사용자 정의 함수로 등록해 두었습니다.

 

단축키 <Alt + F11>을 눌러 VBE를 실행합니다.

Option Explicit

'Main Function
Function SpellNumber(ByVal MyNumber)
    Dim Dollars, Cents, Temp
    Dim DecimalPlace, Count
    ReDim Place(9) As String
    
    Place(2) = " Thousand "
    Place(3) = " Million "
    Place(4) = " Billion "
    Place(5) = " Trillion "
    
    ' String representation of amount.
    MyNumber = Trim(Str(MyNumber))
    
    ' Position of decimal place 0 if none.
    DecimalPlace = InStr(MyNumber, ".")
    
    ' Convert cents and set MyNumber to dollar amount.
    If DecimalPlace > 0 Then
        Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
        MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
    End If
    
    Count = 1
    
    Do While MyNumber <> ""
        Temp = GetHundreds(Right(MyNumber, 3))
        
        If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
        
        If Len(MyNumber) > 3 Then
            MyNumber = Left(MyNumber, Len(MyNumber) - 3)
        Else
            MyNumber = ""
        End If
        
        Count = Count + 1
    Loop
    
    Select Case Dollars
        Case ""
            Dollars = "No Dollars"
        Case "One"
            Dollars = "One Dollar"
        Case Else
            Dollars = Dollars & " Dollars"
    End Select
    
    Select Case Cents
        Case ""
            Cents = " and No Cents"
        Case "One"
            Cents = " and One Cent"
        Case Else
            Cents = " and " & Cents & " Cents"
    End Select
    
    SpellNumber = Dollars & Cents
End Function

' Converts a number from 100-999 into text
Function GetHundreds(ByVal MyNumber)
    Dim Result As String
    
    If Val(MyNumber) = 0 Then Exit Function
    
    MyNumber = Right("000" & MyNumber, 3)
    
    ' Convert the hundreds place.
    If Mid(MyNumber, 1, 1) <> "0" Then
        Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
    End If
    
    ' Convert the tens and ones place.
    If Mid(MyNumber, 2, 1) <> "0" Then
        Result = Result & GetTens(Mid(MyNumber, 2))
    Else
        Result = Result & GetDigit(Mid(MyNumber, 3))
    End If
    
    GetHundreds = Result
End Function

' Converts a number from 10 to 99 into text.
Function GetTens(TensText)
    Dim Result As String
    
    Result = "" ' Null out the temporary function value.
    
    If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
        Select Case Val(TensText)
            Case 10: Result = "Ten"
            Case 11: Result = "Eleven"
            Case 12: Result = "Twelve"
            Case 13: Result = "Thirteen"
            Case 14: Result = "Fourteen"
            Case 15: Result = "Fifteen"
            Case 16: Result = "Sixteen"
            Case 17: Result = "Seventeen"
            Case 18: Result = "Eighteen"
            Case 19: Result = "Nineteen"
            Case Else
        End Select
        
    Else ' If value between 20-99...
        Select Case Val(Left(TensText, 1))
            Case 2: Result = "Twenty "
            Case 3: Result = "Thirty "
            Case 4: Result = "Forty "
            Case 5: Result = "Fifty "
            Case 6: Result = "Sixty "
            Case 7: Result = "Seventy "
            Case 8: Result = "Eighty "
            Case 9: Result = "Ninety "
            Case Else
        End Select
        
        Result = Result & GetDigit(Right(TensText, 1))         ' Retrieve ones place.
    End If
    
    GetTens = Result
End Function

' Converts a number from 1 to 9 into text.
Function GetDigit(Digit)
    Select Case Val(Digit)
        Case 1: GetDigit = "One"
        Case 2: GetDigit = "Two"
        Case 3: GetDigit = "Three"
        Case 4: GetDigit = "Four"
        Case 5: GetDigit = "Five"
        Case 6: GetDigit = "Six"
        Case 7: GetDigit = "Seven"
        Case 8: GetDigit = "Eight"
        Case 9: GetDigit = "Nine"
        Case Else: GetDigit = ""
    End Select
End Function

 

단축키 <Alt + Q>를 눌러 열려 있는 VBE를 닫고 엑셀로 돌아 갑니다.

 

[D4] 셀에 사용자 정의 함수를 이용해 [B2] 셀 숫자를 영어로 나타내 보겠습니다.

 

[D2] 셀을 선택합니다.

 

=sp 까지 입력하면 함수 목록이 나타납니다.

나타난 함수 이름을 더블 클릭해 나타내고 [B2] 셀을 클릭해 함수 인수로 입력합니다.

<Enter>키를 누르면 영어로 바뀐 결과가 표시됩니다.

마지막에 표시된 'Dollars and No Cents'를 없애려면 사용자 정의 함수를 수정해야 합니다.

 

필요하신 분께 도움 되길 바라며 마치겠습니다.

 

수고하셨습니다.

반응형

+ Recent posts