numberstring함수 (2)
레이의 VBA정복기7- 숫자를 영어로 변환하는 방법
반응형
지난 글 '레이의 VBA정복기6- 숫자를 한글 또는 한자로 변환하는 법'에서 엑셀 함수 'NUMBERSTRING'를 이용하면 될 것을 굳이 VBA코드로 작업한 이유로 '다음에 올릴 예정인 포스트와 연관되어 있습니다'라고 밝혔습니다.

인터넷 검색을 통해서 알아본 결과, 숫자를 한글 또는 한자로 변환하는 방법을 많이 얻을 수 있습니다(이곳에 가시면 NUMBERSTRING함수 이외에 다양한 방법이 있음). 그러나 숫자를 영어로 변환하는 방법에 대한 검색 결과는 VBA코드를 이용하는 방법외에는 없었습니다.
이런 이유로 '레이의 VBA정복기6'를 올리게 된 것 입니다.

좌우지간, 엑셀에서 숫자를 영어로 전환하는 VBA코드을 아래와 같이 올립니다.
아래의 코드를 '레이의 VBA정복기6- 숫자를 한글 또는 한자로 변환하는 법'에 설명된 방법대로 설정하시면 됩니다.

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


반응형
  Comments,     Trackbacks
엑셀팁 - 숫자를 문자로
반응형
숫자를 문자로 -  NUMBERSTRING 함수

  오늘은 숫자를 문자로 바꿔주는 NUMBERSTRING 함수에 대해 살펴보도록 하겠습니다. 이 함수를 사용하여 입력된 금액을 한글이나 한자로 변경할 수 있습니다. 단, 이 함수는 마법사에서 제공을 하지 않으므로 직접 입력하여 사용해야 합니다.

[형식]

NUMBERSTRING(값, Type)
- 값: 숫자를 한글로 변경할 실제 값이나 셀을 참조합니다.
- Type: 1~3까지 입력할 수 있으며,
  1일 때 123456 =NUMBERSTRING(A1,1) '십이만삼천사백오십육'
  2일 때 123456 =NUMBERSTRING(A2,2) '壹拾貳萬參阡四百伍拾六'
  3일 때 123456 =NUMBERSTRING(A3,3) '일이삼사오육'
  으로 화면에 나타납니다.

<1> 만기 금액을 구한 셀을 한글로 변경해 보도록 하겠습니다. 결과값이 나올 셀로 이동한 후 =NUMBERSTRING( 이라고 입력한 후 값이나 수식을 입력하며 표시할 Type도 입력합니다.

<2> 나머지 만기 금액도 이 함수를 사용하여 표시형식을 변경해 봅니다.

[참고하기] FV 함수

FV 함수는 일정 금액을 정기적으로 불입하고 일정한 이율을 적용하는 투자의 미래 가치를 계산하는 함수 입니다.

FV(Rate,Nper,Pmt,Pv,Type)
- Rate: 적립기간 동안 적용되는 이자율 또는 목표 수익률입니다. 이때 이율은 적립기간 단위와 일치합니다. 즉, 연 12%의 이율로 매월 적립하는 경우라면 월 단위로 일치하는 이율 1%(12%÷12월)를 적용합니다.
- Nper: 납입 횟수입니다. rate 계산에 적용된 기간 단위와 일치하여야 합니다.
- Pmt : 매 기간 납입액으로 납입 기간 동안 일정하해야 하며, 현금의 흐름에 따라 부호를 다르게 사용합니다. 예를 들어 은행에 매월 일정 금액을 적립하는 경우 저축하는 사람 입장에서 현금의 유출이므로 '-'부호를, 은행의 입장에서는 현금의 유입이므로 '+'기호를 붙입니다.
- Pv: 현재 가치 또는 앞으로 지불할 일련의 납입금의 현재 가치를 나타내는 총액을 입력하는 항목으로 Pv를 생략하면 0으로 간주되며 이 경우 pmt 인수를 반드시 포함해야 합니다.
- Type: 0또는 1로 납입 시점을 나타내는데, 생략하거나 0을 입력하면 기말이 되고 1을 입력하면 기초가 됩니다.



출처 : 오피스튜터 (www.officetutor.com)



저와 함께 희망을 향해 함께 달리죠.이걸 꾸~욱 누르면서




반응형
  Comments,     Trackbacks
최근 작성 글
최근 작성 댓글
최근 작성 트랙백
프로필
공지사항
글 보관함
캘린더
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
TODAY TOTAL