Comments on: Two best ways to convert numbers to words in Excel

In this article I will show you two quick and free ways to convert currency numbers into English words in Excel 2019, 2016, 2013 and other versions. Continue reading

Comments page 10. Total comments: 530

  1. Thanks for authentic codes. It works where codes from Microsoft gave an error message.
    Best wushes!
    Regards,

  2. It working very well. Thank's

  3. Hi, Can please I have the code without dollars and cents? thanks

    1. Hey Mike!
      do you get the code without dollars and cents
      i also need this code
      if you get this code please send me
      i have really need this code

  4. when i copy and paste this, it gives me errors, what am i doing wrong?

  5. SIMPLE, LOL, YOUR MACROS WORKED FIRST TIME, NO PROBLEMS, ONLY REQUEST IS FOR A CHANGE TO 00/00...01/00...03/00 AND SO ON INSTEAD OF CENTS, GOT YOURS TO WORK 00/00 AND 01/00 TO WORK, BUT AFTER THAT, ALL IS TEXT /00. SO I DELETED CENTS ALL TOGETHER TILL I GET THE CORRECT MACROS FOR THE OO/00 TO 99/00, PLEASE AND THANKS

    1. Here is my solution in a shorter macro:
      Function NumberToWords(ByVal StartNumber As Currency) As String

      Dim Buffer As String
      Dim Dollars
      Dim Cents
      Dim NumberofGroups
      Dim NumberSegment
      Dim Hundreds
      Dim Tens
      Dim Ones
      GroupNames = Array("", "Thousand ", "Million ", "Billion ", "Trillion ")
      OnesNames = Array("", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine ", "Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen ")
      TensNames = Array("", "", "Twenty ", "Thirty ", "Fourty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety ")

      Dollars = Fix(StartNumber)
      Cents = Fix(100 * (StartNumber - Fix(StartNumber)) + 0.5)
      NumberofGroups = Fix((Log(Dollars) / Log(10)) / 3)

      Dim i
      For i = NumberofGroups To 0 Step -1
      NumberSegment = Fix(Dollars / 10^ ^ (i * 3))
      Hundreds = Fix(NumberSegment / 100)
      Tens = Fix((NumberSegment - (Hundreds * 100)) / 10)
      Ones = NumberSegment - (Hundreds * 100) - (Tens * 10)

      If Hundreds > 0 Then
      Buffer = Buffer + OnesNames(Hundreds) + "Hundred "
      End If
      If Tens > 0 Then
      If Tens > 1 Then
      Buffer = Buffer + TensNames(Tens) + OnesNames(Ones)
      Else
      Buffer = Buffer + OnesNames(Tens * 10 + Ones)
      End If
      Else
      Buffer = Buffer + OnesNames(Ones)
      End If

      If NumberSegment > 0 Then
      Buffer = Buffer + GroupNames(i)
      End If

      Dollars = Dollars - (NumberSegment * 10^ ^ (i * 3))
      Next i

      Buffer = Buffer + "and "
      If Cents < 10 Then
      Buffer = Buffer + "0"
      End If
      Buffer = Buffer + Trim(Str(Cents)) + "/100 *****************************************"

      NumberToWords = Buffer

      End Function

    2. I need the answer for this

  6. Thanks you very much....

  7. Hi,
    Could you tell me the code where I can mention "and" before the last figures e.g. Rs 1,987,290 (Rupees one million nine Hundred eighty seven thousand two hundred and ninety only)

    1. pls use below function
      Option Explicit
      'Main Function
      Function SpellNumber(ByVal MyNumber)
      Dim Rupees, only, Temp
      Dim DecimalPlace, Count
      ReDim Place(9) As String
      Place(2) = " Thousand, "
      Place(3) = " Million, "
      Place(4) = " Billion, "
      Place(5) = " Trillion, "

      MyNumber = Trim(Str(MyNumber))
      DecimalPlace = InStr(MyNumber, ".")
      If DecimalPlace > 0 Then
      only = 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 Rupees = Temp & Place(Count) & Rupees
      If Len(MyNumber) > 3 Then
      MyNumber = Left(MyNumber, Len(MyNumber) - 3)
      Else
      MyNumber = ""
      End If
      Count = Count + 1
      Loop
      Select Case Rupees
      Case ""
      Rupees = "No Rupees"
      Case "One"
      Rupees = "One Dollar"
      Case Else
      Rupees = Rupees & " Only"
      End Select
      SpellNumber = "Rupees " & Rupees
      End Function

      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

      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

      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

  8. Hi, can i have the code without dollars and cents, E.g.
    Four Million Six Hundred Three Thousand Four Hundred Twenty Two

  9. Thank you Bro....

  10. i just want the wording not any currency. what should i do?

  11. How can I download vba code to my phone?

  12. Thank you for this.
    However, this was noticed.
    For example, i tried to spell 450,750.34
    Four Hundred Fifty Thousand Seven Hundred Fifty Dollars and Thirty Four Cents
    In my country, we spell like this
    Four Hundred and Fifty Thousand, Seven Hundred and Fifty Dollars, Thirty Four Cents
    Can you please help me tweak the VBA code to have this new result.

    1. Option Explicit
      'Main Function
      Function SpellNumber(ByVal MyNumber)
      Dim Rupees, Paisa, Temp
      Dim DecimalPlace, Count
      ReDim Place(9) As String
      Place(2) = " Thousand "
      Place(3) = " Million "
      Place(4) = " Billion "
      Place(5) = " Trillion "

      MyNumber = Trim(Str(MyNumber))
      DecimalPlace = InStr(MyNumber, ".")
      If DecimalPlace > 0 Then
      Paisa = 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 Rupees = Temp & Place(Count) & Rupees
      If Len(MyNumber) > 3 Then
      MyNumber = Left(MyNumber, Len(MyNumber) - 3)
      Else
      MyNumber = ""
      End If
      Count = Count + 1
      Loop
      Select Case Rupees
      Case ""
      Rupees = "No Rupees"
      Case "One"
      Rupees = "One Dollar"
      Case Else
      Rupees = Rupees & " Rupees"
      End Select
      Select Case Paisa
      Case ""
      Paisa = " and No Paisa"
      Case "One"
      Paisa = " and One Cent"
      Case Else
      Paisa = " and " & Paisa & " Paisa"
      End Select
      SpellNumber = Rupees & Paisa
      End Function

      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

      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

      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

    2. did u got that code? i need it too

  13. help me naman po pano mag convert numbers to words sa excell for cheque please ..

  14. Thank you Sir for sharing this formula. It's help me a lot! I really appreciate that. Thanks again.

  15. This formula is very good working on any Currency..

  16. I Was looking for him a lot, This formula hit is very good working on any Currency,
    i am very happy thank you very much sir, Great job, May Allah bless you.?????????

    1. Assalam -o- Alaikum
      My dear brother i want to convert a mathematical digits in english words without any currency like as
      564 Five Hundred and Sixty Four
      what i do now please help me as soon as possible
      i have to prepare Result Cards

      1. Wa Alaikum Assalam,
        Dear Raja Zeeshan
        Please in macro editor window press Ctrl+F , find Dollar and replace it with empty space . do it again for Dollars and similarly for Cent and cents respectively. I hope it will solve your problem.

  17. I am getting a value like this :Four Hundred Eighty Dollars and Seventy One Cents. Instead of Dollars I want to have it in Kuwaiti Dinars and fills.
    Pls help me

  18. Dear, this is to update you that the formula is not working perfectly. See the response that I am getting:->
    For Kuwaiti Dinars
    for KD 122.050 I got: One Hundred Twenty Two Kuwait Dinar and Five fils

    the correct answer has to be: One Hundred Twenty Two Kuwait Dinar and Fifty fils
    What to change now

    1. the issue is to replace the separator from "." to "," in the number or in the formula from:
      MyNumber = Trim(Str(MyNumber))
      DecimalPlace = InStr(MyNumber, ".")
      to:
      MyNumber = Trim(Str(MyNumber))
      DecimalPlace = InStr(MyNumber, ",")

    2. look at the figure, it says .05 and not .50, the result is correct it seems the figure is point zero five, therefore the result should be five instead of fifty

  19. I keep getting a syntax error
    Do While MyNumber ""
    Temp = GetHundreds(Right(MyNumber, 3))
    If Temp "" Then Dollars = Temp & Place(Count) & Dollars

  20. how can i convert numbers to words for Peso

    1. replace lng mam yung dollars nang pesos (control+h) tapos replace all lng..

      dollars to pesos
      dollar to peso

      1. How about po yong 66.15 for example.
        Sinasabi nya Sixty six pesos and Fourteen Cents lng. Paano po babaguhin para maging fifteen sya.

  21. 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 "

    MyNumber = Trim(Str(MyNumber))
    DecimalPlace = InStr(MyNumber, ".")
    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

    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

    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

    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

    1. when i copy and paste this, it gives me errors, what am i doing wrong?

      1. Option Explicit
        'Main Function
        Function SpellNumber(ByVal MyNumber)
        Dim Rupees, Paisa, Temp
        Dim DecimalPlace, Count
        ReDim Place(9) As String
        Place(2) = " Thousand "
        Place(3) = " Million "
        Place(4) = " Billion "
        Place(5) = " Trillion "

        MyNumber = Trim(Str(MyNumber))
        DecimalPlace = InStr(MyNumber, ".")
        If DecimalPlace > 0 Then
        Paisa = 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 Rupees = Temp & Place(Count) & Rupees
        If Len(MyNumber) > 3 Then
        MyNumber = Left(MyNumber, Len(MyNumber) - 3)
        Else
        MyNumber = ""
        End If
        Count = Count + 1
        Loop
        Select Case Rupees
        Case ""
        Rupees = "No Rupees"
        Case "One"
        Rupees = "One Rupees"
        Case Else
        Rupees = Rupees & " Rupees"
        End Select
        Select Case Paisa
        Case ""
        Paisa = " and No Paisa"
        Case "One"
        Paisa = " and One Paisa"
        Case Else
        Paisa = " and " & Paisa & " Paisa"
        End Select
        SpellNumber = Rupees & Paisa
        End Function

        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

        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

        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

        1. i use this code but not given result. massage come Privacy warning; This documents contains macros, Activex controls,XML expansion pack information, or web components. These may include personal information that can not be removed by the documents inspector.

        2. than save ur file

  22. please provide sample video

  23. Hello,

    I'm trying to convert the numbers into a weight.
    ex. 2000 = two thousand pounds
    Is there a way to easily convert that?

    Regards,
    Bryan

  24. How can I convert 123,156,236.64 KG into words? Please help me

  25. Can anyone help with it converting negative numbers?

    for example:

    -£120.69 reading as Minus One Hundred Pound and Sixty Nine Pence

  26. I am use this formula but there is not convert amount in word format instead of that i show the formula in sheet. pl guide me.

  27. Finally it works on Excell 2010!!! Thank you, Sir!!

    I followed your instructions and it works!

  28. 123=One hundred and twenty three.
    But excel make it
    One hundred twenty three.
    How am I going to edit the code so that it can accept the "and" even when I type 20550 It should be able to read "Twenty Five Thousand Five Hundred and Fifty
    Please Note the "and"

  29. How not spelled if no cents.

  30. Every perfect, but error with unicode is "S" to "?"

  31. Please share the password of Popup Spell Zip File (add on to MS Excel) I have downloaded the Popup Spell Add on but while extracting it asks for password.

    Please help

  32. Excellent & easy way to convert number in word ..
    nothing to say .....

  33. Can one use =spellnumber to convert ordinary numbers, not currency) to words. If so how.

  34. Hi EveryOne

    Greeting for the day!!!

    I need solution that how to unhide hidden row which is hidden by advanced filter in vba. When i select all sheet and unhide the rows but it not work. Please suggest if anybody have any idea for it.

    Thanks,
    Ependra Singh
    9899808895

  35. Hi,

    Please give me one solution for convert sum amount to words in excel

  36. I Like This

  37. after closing excel file and open again this method doesn't work.
    please help me!

  38. since our currency is peso and the cents are express as centavos, i modified the code to reflect our currency...

    Option Explicit
    'Main Function
    Function SpellNumber(ByVal MyNumber)
    Dim Pesos, Centavos, Temp
    Dim DecimalPlace, Count
    ReDim Place(9) As String
    Place(2) = " Thousand "
    Place(3) = " Million "
    Place(4) = " Billion "
    Place(5) = " Trillion "

    MyNumber = Trim(Str(MyNumber))
    DecimalPlace = InStr(MyNumber, ".")
    If DecimalPlace > 0 Then
    Centavos = 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 Pesos = Temp & Place(Count) & Pesos
    If Len(MyNumber) > 3 Then
    MyNumber = Left(MyNumber, Len(MyNumber) - 3)
    Else
    MyNumber = ""
    End If
    Count = Count + 1
    Loop
    Select Case Pesos
    Case ""
    Pesos = "No Pesos"
    Case "One"
    Pesos = "One Peso"
    Case Else
    Pesos = Pesos & " Pesos"
    End Select
    Select Case Centavos
    Case ""
    Centavos = " "
    Case "One"
    Centavos = " and One Centavo"
    Case Else
    Centavos = " and " & Centavos & " Centavos"
    End Select
    SpellNumber = Pesos & Centavos
    End Function

    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

    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

    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

  39. hello sir please provide code for Indian currency

    example. 100000 = one lac only
    1000 = one thousand
    100 = one hundred
    1000000 = ten lac only
    10000000 = one crore only

  40. hello sir please provide code for Indian currency
    example. 100000 = one lac only
    1000 = one thousand
    100 = one hundred
    1000000 = ten lac only
    10000000 = one crore only

  41. hi,

    I need to know how i can break the lines of number in words as if the word is too long i need to print in the second line of cheque. how i can do that.

  42. Thank you !
    Well done for Dinars and Euros !

  43. i got a problem with the excel which is unknown format number, i want to convert that in to 10 digit mobile numbers

    EX - ffffec0704fb682e5547b7d0d3da5527

  44. Can someone please help me making such a code that I only get "numbers converted into words",in excel i.e., without dollar or any any currency attached to it. Say I want to convert 2, 34 and 56, can it directly read two, thirty four , and fifty six respectively.

    I will appreciate such help.

  45. Hi Dear ,

    I tried converting into indian rupees .

    But CTRL+H function is not working

    It is showing the error when I type "Dollars"as ' we couldnt find what you are looking for "

    Pls help

  46. Hi,
    I'm trying to convert nums to words (in indian currency: like 448787 to four lakh fourty eight thousand seven hundred eighty seven only),but its not happening.
    Please help me & take me out of the problem.

  47. Hi,
    I'm trying to convert nums to words (in indian currency: like 448787 to four lakh fourty eight seven hundred eighty seven only),but its not happening.
    Please help me & take me out of the problem.

  48. I want to modify it for Indian system, I changed Dollar to Rupee, but changing Millions to Lakhs wont be correct as Million has 6 zeroes and Lakhs as 5. the array defined has terms differing by 3 zeroes, can you help out with modifying the array to incorporate Lakhs

  49. How can numbers be converted with no currency and if no cents to ignore cents bit
    Example
    5,455/= Five thousand Four hundred fifty five only
    5,455.50/= Five thousand Four hundred fifty five and Fifty cents only

  50. How to convert as follows:-
    1. 1,234 = One Thousand Two hundred And Thirty Four
    2. 1,200 = One Thousand And Two hundred?
    3. 1,202.50 = One Thousand Two hundred Two And Cents Fifty?
    4. 11,010 = Eleven Thousand And Ten?

    1. Function NumToWord(ByVal N As Currency) As String

      Const Ten = 10@
      Const Hundred = Ten * Ten
      Const Thousand = Ten * Hundred
      Const Lakh = Thousand * Hundred
      Const Crore = Lakh * Hundred
      Const Million = Thousand * Thousand
      Const Billion = Thousand * Million
      Const Trillion = Thousand * Billion

      If (N = 0@) Then NumToWord = "zero": Exit Function

      Dim Buf As String: If (N < 0@) Then Buf = "negative " Else Buf = ""
      Dim Frac As Currency: Frac = Abs(N - Fix(N))
      If (N < 0@ Or Frac 0@) Then N = Abs(Fix(N))
      Dim AtLeastOne As Integer: AtLeastOne = N >= 1

      If (N >= Crore) Then
      Buf = Buf & NumToWordDigitGroup(Int(N / Crore)) & " Crore"
      N = N - Int(N / Crore) * Crore
      If (N >= 1@) Then Buf = Buf & " "
      End If

      If (N >= Lakh) Then
      Buf = Buf & NumToWordDigitGroup(Int(N / Lakh)) & " Lakh"
      N = N - Int(N / Lakh) * Lakh
      If (N >= 1@) Then Buf = Buf & " "
      End If

      If (N >= Thousand) Then
      Buf = Buf & NumToWordDigitGroup(N \ Thousand) & " Thousand"
      N = N Mod Thousand
      If (N >= 1@) Then Buf = Buf & " "
      End If

      If (N >= Hundred) Then
      Buf = Buf & NumToWordDigitGroup(N \ Hundred) & " hundred"
      N = N Mod Hundred
      If (N >= 1@) Then Buf = Buf & " "
      End If

      If (N >= 1@) Then
      Buf = Buf & NumToWordDigitGroup(N)
      End If

      NumToWord = Buf
      End Function

      Private Function NumToWordDigitGroup(ByVal N As Integer) As String

      Const Hundred = " hundred"
      Const One = "one"
      Const Two = "two"
      Const Three = "three"
      Const Four = "four"
      Const Five = "five"
      Const Six = "six"
      Const Seven = "seven"
      Const Eight = "eight"
      Const Nine = "nine"
      Dim Buf As String: Buf = ""
      Dim Flag As Integer: Flag = False

      Select Case (N \ 100)
      Case 0: Buf = "": Flag = False
      Case 1: Buf = One & Hundred: Flag = True
      Case 2: Buf = Two & Hundred: Flag = True
      Case 3: Buf = Three & Hundred: Flag = True
      Case 4: Buf = Four & Hundred: Flag = True
      Case 5: Buf = Five & Hundred: Flag = True
      Case 6: Buf = Six & Hundred: Flag = True
      Case 7: Buf = Seven & Hundred: Flag = True
      Case 8: Buf = Eight & Hundred: Flag = True
      Case 9: Buf = Nine & Hundred: Flag = True
      End Select

      If (Flag False) Then N = N Mod 100
      If (N > 0) Then
      If (Flag False) Then Buf = Buf & " "
      Else
      NumToWordDigitGroup = Buf
      Exit Function
      End If

      Select Case (N \ 10)
      Case 0, 1: Flag = False
      Case 2: Buf = Buf & "twenty": Flag = True
      Case 3: Buf = Buf & "thirty": Flag = True
      Case 4: Buf = Buf & "forty": Flag = True
      Case 5: Buf = Buf & "fifty": Flag = True
      Case 6: Buf = Buf & "sixty": Flag = True
      Case 7: Buf = Buf & "seventy": Flag = True
      Case 8: Buf = Buf & "eighty": Flag = True
      Case 9: Buf = Buf & "ninety": Flag = True
      End Select

      If (Flag False) Then N = N Mod 10
      If (N > 0) Then
      If (Flag False) Then Buf = Buf & "-"
      Else
      NumToWordDigitGroup = Buf
      Exit Function
      End If

      Select Case (N)
      Case 0:
      Case 1: Buf = Buf & One
      Case 2: Buf = Buf & Two
      Case 3: Buf = Buf & Three
      Case 4: Buf = Buf & Four
      Case 5: Buf = Buf & Five
      Case 6: Buf = Buf & Six
      Case 7: Buf = Buf & Seven
      Case 8: Buf = Buf & Eight
      Case 9: Buf = Buf & Nine
      Case 10: Buf = Buf & "ten"
      Case 11: Buf = Buf & "eleven"
      Case 12: Buf = Buf & "twelve"
      Case 13: Buf = Buf & "thirteen"
      Case 14: Buf = Buf & "fourteen"
      Case 15: Buf = Buf & "fifteen"
      Case 16: Buf = Buf & "sixteen"
      Case 17: Buf = Buf & "seventeen"
      Case 18: Buf = Buf & "eighteen"
      Case 19: Buf = Buf & "nineteen"
      End Select

      NumToWordDigitGroup = Buf

      End Function

Post a comment



Thank you for your comment!
When posting a question, please be very clear and concise. This will help us provide a quick and relevant solution to
your query. We cannot guarantee that we will answer every question, but we'll do our best :)