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 2016, 2013 and other versions.

Microsoft Excel is a great program to calculate this and that. It was initially developed to process large data arrays. However, it also lets creating accounting records like invoices, evaluation or balance sheets quickly and effectively.

In more or less solid payment documents it is necessary to duplicate numeric values with their word form. It is much harder to falsify typed numbers than those written by hand. Some swindler can try to make 8000 out of 3000, while it is almost impossible to secretly replace "three" with "eight".

So what you need is not just convert numbers to words in Excel (е.g. 123.45 to "one hundred and twenty three, forty five"), but spell out dollars and cents (е.g. $29.95 as "twenty nine dollars and ninety nine cents" ), pounds and pence for GBP, euros and eurocents for EUR, etc.
Convert number to words in Excel 2010

Even Excel 2016 doesn't have a built-in tool for spelling numbers, not to mention earlier versions. But that is when Excel is really good. You can always improve its functionality using formulas in all their
combinations, VBA macros, or third-party add-ins.

Below you'll find two ways to convert numbers from figures to words

And, possibly, you may need to convert Words to Numbers in Excel

Note. If you are looking for the number to text conversion, which means you want Excel to see your number as text, it's a bit different thing. Usually, you simply need to change the cell format in Excel (select your range with numbers, press Ctrl+1 on the Number tab, and select "Text" in the Category field). You can also use the formula =text().

Please find the details in the article Ways to convert numbers to text in Excel.

SpellNumber VBA macro to convert numbers to words

As I have already mentioned, Microsoft didn't want to add a tool for this task. However, when they saw how many users needed it, they created and published the special VBA macro on their website. The macro does what its name SpellNumber suggests. All other macros I came across are based on the Microsoft code.

You can find the macro mentioned as "spellnumber formula". However, it is not a formula, but a macro function, or to be more precise Excel User defined function (UDF).

The spellnumber option is able to write dollars and cents. If you need a different currency, you can change "dollar" and "cent" with the name of your one.

If you are not a VBA savvy guy, below you will find a copy of the code. If you still don't want or haven't time to sort this out, please use this solution.

  1. Open the workbook where you need to spell the numbers.
  2. Press Alt+F11 to open the Visual Basic editor window.
  3. If you have several books opened, check that the needed workbook is active using the list of projects in the upper left corner of the editor (one of the workbook elements is highlighted with blue).
  4. In the editor menu go to Insert-> Module.
    Excel Visual Basic editor - insert module
  5. You should see a window named YourBook - Module1. Select all of the code in the frame below and paste it to this window.
    SpellNumber VBA macro to convert numbers to words

    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
    
  6. Press Ctrl+S to save the updated workbook.

    You will need to resave your workbook. When you try to save the workbook with a macro you'll get the message "The following features cannot be saved in macro-free workbook"

    The following features cannot be saved in macro-free Workbook : VB project

    Click No. When you see a new dialog, chose the Save as option. In the field "Save as type" pick the option "Excel macro-enabled workbook".

    Save your book as 'Excel macro-enabled workbook'

Use SpellNumber macro in your worksheets

Now you can use the function SpellNumber in your Excel documents. Enter =SpellNumber(A2) into the cell where you need to get the number written in words. Here A2 is the address of the cell with the number or amount.

Use SpellNumber macro in your Excel worksheets

Here you can see the result:
Spelled out numbers to dollars and cents

Voila!

Quickly copy the SpellNumber function to other cells.

If you need to convert the entire table, not just 1 cell, place your mouse cursor to the lower right corner of the cell with the formula until it turns into a small black cross:
Quickly copy the SpellNumber function to other cells

Left-click and drag it across the column to fill in the formula. Release the button to see the results:
Spelled out numbers to dollars and cents

Note. Please keep in mind that if you use SpellNumber with a link to another cell, the written sum will be updated each time the number in the source cell is changed.
You can also enter the number directly into the function, for example, =SpellNumber(29.95) (29.95 - without quotation marks and the Dollar sign).

Disadvantages of using macro to spell numbers in Excel

First off, you must know VBA to modify the code according to your needs. It is necessary to paste the code for each workbook, where you plan to change it. Otherwise, you will need to create a template file with macros and configure Excel to load this file at each start.

The main disadvantage of using a macro is if you send the workbook to somebody else, this person will not see the text unless the macro is built into the workbook. And even if it's built-in, they will get an alert that there are macros in the workbook.
Add a macro to your workbook

Free ready-to-use add-in to spell numbers into words

For active Excel users who need to quickly spell sums but don't want to learn VBA or other workarounds, one kind developer created a free add-in - POPUP SPELL NUMBER for Microsoft Excel

Besides being ready for use, the tool is really flexible in converting numbers. You can choose the text case of the result (lower case, Title Case, Sentence case, UPPER CASE ), also you can select how you want to see the fraction:

  • Spells the fraction in cent/cents, оr penny/pennies, оr penny/pence, or centavo/centavos
  • Spells decimal point, each zero and the rest of the number as an integer.
  • Doesn't spell the fraction but writes it as a fraction with denominator of 100, 1000, 1000000

Feel free to explore its possibilities on the product's home page.

The author states that it's tested and works in Excel for Windows 2000, 2002(XP), 2003, 2007, 2010 (32-bit), and 2013 (32-bit) in MSI-based and Click-To-Run installations of Office 365 cloud-based services.

And all is wonderful about POPUP SPELL NUMBER, but...

I hate to say that the add-in doesn't work with 64-bit versions of Excel 2010, 2013, 2007. And it is a considerable obstacle since these versions are becoming more and more popular. So lucky you are if you have Excel 32-bit :) Feel free to download the add-in and check it out.

If you are the one with Excel 64-bit like me, drop the author a line and ask him for a special version.

Reverse conversion - English words into numbers

Frankly, I can't imagine why you may need it. Just in case... :)

It appears that Excel MVP, Jerry Latham, created such Excel User defined function (UDF) as WordsToDigits. It converts English words back to number.

You can download Jerry's WordsToDigits workbook to see the UDF code. Here you'll also find his examples of how to use the function.

Convert english words into numbers

You can see how the function works on the sheet "Sample Entries", where you will also be able to enter your own examples. If you plan to employ WordsToDigits in your documents, please be informed that this function has restrictions. For example, it doesn't recognize fractions entered in words. You will find all the details on the "Information" sheet.

See also

384 Responses to "Two best ways to convert numbers to words in Excel"

  1. Umer says:

    Sir, How can i convert dollar into Rupees and cent Into paisa in SpellNumber. I mean i want to change numeric value into words in pakistani currency. Kindly guide.
    Your early response must be appreciated

    • sohaib says:

      Umer its very simple, after copying the above formula into module press CTRL+H and replace the word Dollar with Rupee and Cent with Paisa and then safe the module.

  2. Albert says:

    Beautiful!!!!

    Thank you for posting and making it so easy to implement. Really helped out in a crunch.

  3. Irfan says:

    Please send me same excel sheet with formula,

  4. Thangamani says:

    This one how do the amount currency change?

  5. Jolyn says:

    Hi,
    Can i have a copy of the formula in excel for the converted value, please ?

  6. Ali Mehran Wafai says:

    Thank You So Much :)

  7. Salman says:

    If you want only integers to be spelled no decimals.. here is the code

    Option Explicit
    'Main Function
    Function SpellNumber(ByVal MyNumber)
    Dim Rupees, Paisas, 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 Paisas and set MyNumber to Rupee amount.
    If DecimalPlace > 0 Then
    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 Rupee"
    Case Else
    Rupees = Rupees & " Rupees"
    End Select
    SpellNumber = Rupees
    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

    "Ctrl+H" and replace "Rupees & Rupee" to your respective currency

    • sohaib says:

      how can we add the word "Only" in this macro to have this word at the end of the spelled values?

      • Mir Osman ALi says:

        Hi Sohaib

        If You Want To Add "Only"
        then
        You have to use "Spellnumber" with "Concatenate" Formula

        Eg:

        If the Value in Number in Cell A1 then

        Apply Formula Like This

        =CONCATENATE(SpellNumber(A1)," Only")

        Hope Will Be Useful

        • Fabienne says:

          Super helpful. It's also useful if you have a currency in 2 words, like Ugandan Shilling. You can replace Dollars only with 1 word.
          so I replaced Dollars by Ugandan and I added Shillings, in the end, with CONCATENATE instead of Only.

          =CONCATENATE(SpellNumber(A1)," Shillings")

    • Kenny Telfer says:

      Some errors in that code for me, I've fixed and changed to UK Pounds, also added "and" between the thousand and the hundreds, and a comma.

      Option Explicit
      'Main Function
      Function SpellNumber(ByVal MyNumber)
      Dim Pounds, Pence, 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 Pence and set MyNumber to Pounds amount.
      If DecimalPlace > 0 Then
      MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
      End If
      Count = 1
      Do While MyNumber ""
      Temp = GetHundreds(Right(MyNumber, 3))
      If Temp "" Then Pounds = Temp & Place(Count) & Pounds
      If Len(MyNumber) > 3 Then
      MyNumber = Left(MyNumber, Len(MyNumber) - 3)
      Else
      MyNumber = ""
      End If
      Count = Count + 1
      Loop
      Select Case Pounds
      Case ""
      Pounds = "No Pounds"
      Case "One"
      Pounds = "One Pound"
      Case Else
      Pounds = Pounds & " Pounds"
      End Select
      SpellNumber = Pounds
      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 and "
      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

  8. SIKANDAR GHODESHWAR says:

    Sir,

    Please send details of excel sheet in permanent add for automatically spellnumber on MS excel- 2007.

    Thanking you

  9. Saiful Islam says:

    Dear Stephen,
    please send me excel sheet for
    converting same

  10. vampire says:

    I have a lot of city name and code

    Example
    i type a code 001 At Cell (A1) - spell Number will show (american) at the another sheet
    i type a code 002 At Cell (A1) Also - spell Number will show (african) at the another sheet and so on... I have a lot of city name to make it, please help me

    Thanks

  11. sultan says:

    Dear Kindly let me know in dirham how to change spellnum in dirham

  12. Bicky kumar says:

    Dear Stephen,

    please send me excel sheet for converting same Pls

    thanks

  13. ravi says:

    please suggest me how to use spellnumber in excel ,i fallowed your steps as u say ,the results came" #name?,",like that,so plz show me right usage .....

  14. Vishal Patel says:

    i want number to ward in rupees and due to this formula it comes into dollars, than what's the step for it..............

  15. Raj Kumar says:

    Hi Sir,

    I am very much need the program that convert the numbers in to English words in excel 2007.(Ex: 11- One One, 20- Two Zero, 21-Two Zero like that)
    Please send me the solution for above querry,

    it is very much urgent..
    thank you very much..

  16. jansen says:

    i use the module, but our central bank required us to put a "ONLY" word in the end of the Check. how can i do this?

  17. Richard Robertson says:

    Please the code to convert amount to words is excellent, only i think there's something missing. after the code is pasted in Excel Module, and you key-in 420, the result that comes is: Four Hundred Twenty Dollars and No Cents. But am expecting Four Hundred and Twenty Dollars and No Cents. This means the an "and" is missing in-between Hundred and twenty. Thank you and looking forward to hear from you soon.

  18. Puvanah says:

    Can i get modules for spellnumbers in words with cents. I have those modules with currency. But i'm using multi currencies so i don't want modules with currencies. Please help email me the modules which i request. Urgent. Please and Thanks.

    Regards,
    Puvanah

  19. MN says:

    How can we split the amount in words into 2 lines in case 1 line is not enough to accommodate the amount in words? This is needed when printing on pre-printed cheque leaves.

    Can anyone please help on the above?

  20. Aklanka says:

    Dear . Alexander Frolov
    Thanks for the formula, its works nicely

  21. Abu Sayed kazi says:

    Dear Sir please send me the copy of these excel sheet please ,as soon as possible , please please

  22. KCraton says:

    Thank you! Copied and pasted the module, saved my file as an .xlm and bada-boom!

  23. sunil kumar yadav says:

    how to delete the rows using check bos in excel.

  24. RAZAK says:

    Working done ,
    after save i close this file again open try modify and try change then its showing error

  25. Daniel Kwame Dadzie says:

    Hi all,
    Can someone assist me to write
    1020 as one thousand and twenty not one thousand twenty please.
    Thank you in advance

  26. Boss says:

    What if I would like to put a special name?
    ex. for 100 will be "clint"

    Therefore,
    100 = Clint
    150 = Clint Fifthy
    123 = Clint Twenty Three
    etc..

    NB: Only for "100"

  27. ASIF KHAN says:

    It is very simple to convert dollar into your currency for example if you have a Rupee go to Module (micro-soft visual basic) enter Ctrl + R just replace dollar and cent with your currency.

    Thanks for more details kindly contact on my email. asifashraf930@gmail.com

  28. Beth says:

    Please send me the excel sheet for converting dollars to words. I tried to paste from an earlier Spellnumber post using VBA but I get a #Name error.

    Thank you.

    • The VBA code from the example above works perfectly when we try it. Please, repeat the steps from the tutorial making sure that you paste the code without losing any lines, and save your document in the proper way as it is described. If this still doesn't help, try our add-in. If the error won't disappear, send us your workbook and the link to this article and your comment to support@ablebits.com.

  29. tanjil says:

    Dear sir, please how to make wordstodigit formula details

  30. Amal says:

    Very useful and clear explanation. 5 Star:D
    Thank you for sharing this information with us.

  31. Rohit says:

    Thnks for ur help. Its been a pleasure to have guidance.

  32. JB says:

    I have follwed your instruction & But still the error as #Name is apprearing on the spell number formula. please help

  33. Srinivas says:

    Please send me also

  34. Thu Hien Nguyen says:

    Please kindly send me the formula also.
    Many thanks.

  35. Tamizi says:

    Please email formula convert to Ringgit Malaysia (RM)

  36. Tamizi says:

    Many thanks to admin

  37. Bikash singh says:

    Please email formula convert number to word

  38. Glenn says:

    I have tried and it was successful. But it was all in dollars.. How about in Qatar Riyals? How can i do it? Can you feed the module formula?

  39. sunil kumar yadav says:

    I have a file containing multiple sheets the first of which is an index
    sheet. The other sheets are hidden. I want to be able to click on a
    hyperlink in the index sheet that will send me to the hidden sheet and
    open it.
    Is this possible ?

  40. David says:

    Hi, I have an issue where i am trying to spellnumber a figure in a summed cell. I have changed the currency to GBP and Pence, but the spell number keeps minusing 1 Pence from the written number. If i do it on an un-summed cell it works fine.

    PLEASE HELP!?

  41. David says:

    Hi Irena

    I have emailed you the document as requested. Hope you can help :)

    • Thank you for the document, David.

      The problem is that the formula results are rounded in Excel, while VBA gets a string and converts only the first 2 characters after the separator. To avoid this issue, please use the following formula instead:
      =spellnumber(ROUND(N24,2))

  42. Bhuraram says:

    UpTo 1 Lac Not Convert To In Word Please Help

  43. Ceen says:

    Dear David ,
    In reference to Irina's chat string the same sheet is required by me .I am unable to poke in hours in preparing the formulation ready sheet
    Much oblighed
    Sincerely 'very faithfully
    CEEN

  44. Akki says:

    Please send details of excel sheet in permanent add for automatically spellnumber on MS excel- 2016

    Awaiting for reply...

  45. Naeem Rajwal says:

    Hi Dear, Can you pleases help to fix the decimal up to 3 Digit. Like below:

    45.975 -Forty Five Dollar and Nine Hundred seventy Five Cents.

  46. Muhammad Ashfaq says:

    Please send details of excel sheet in permanent add for automatically spellnumber on MS excel- 2007.

    Also please suggest me how to use spellnumber in excel ,i fallowed your steps as u say ,the results came" #name?,",like that,so plz show me right usage
    I am waiting for your reply Thanks Muhammad Ashfaq from Pakistan Karachi.....

  47. Prem says:

    Hi, Congrats, It is very helpful. Thank you so much.
    How to make change the words starting with Dollars & Cents first.
    Eg. Rupees One hundred and Paisa Fifty Only instead of One hundred Rupees and Fifty Paisa Only.

    Br//
    Prem

  48. paras says:

    modules after what are the doing

  49. paras says:

    modules after what are the doing 1

  50. harry says:

    Please send details of excel sheet in permanent add for automatically spellnumber on MS excel- 2007

  51. Mozammel says:

    Hello Prem,
    Thanks,man. it helped me out.

    Regards:
    Mozammel
    Chittagong, Bangladesh.

  52. Bharath says:

    This is awesome! I know nothing about VBA but it still made it happen with this so Thanks a ton. however, how do I exclude cents/paisa from the code?i.e. will not need any decimals.

    Thanks again.

  53. alicia says:

    I write this formula

    =CONCATENATE("US ",spellnumber(cell),"***")

    I don't know what's wrong it issue "Name?" Anyone can answer me?

    Many Thanks,
    Alicia

  54. meharoof says:

    i need to display my currency in riyal instead of dollars ...

  55. Grace says:

    I was able to use the SpellNumber successfully for all numbers except for numbers that are only in the thousands with any other numbers (e.g. 54,000 or 30,000). I get two spaces before the word Dollars. I had a similar problem with numbers that ended in the hundred dollars and numbers that ended with 20, 30, 40, 50, 60, 70, 80 and 90. To fix the problem, I changed the GetHundreds = Result to GetHundreds = Trim(Result) and GetTens = Result to GetTens = Trim(Result). I don't know how to change the code for numbers that are only in the Thousands.

  56. Diana says:

    In spanish we do not say "Three hundred" in two words, we say "Trecientos" in one word. Is there a say to add another clause to list numbers from 100-999
    I try to add this but I am getting an error

    Else ' If value between 100-999...
    Select Case Val(Left(TensText, 1))
    Case 20: Result = "Ciento"
    Case 21: Result = "Doscientos "
    Case 22: Result = "Trescientos "
    Case 23: Result = "Cuatrocientos "
    Case 24: Result = "Quinientos "
    Case 25: Result = "Seicientos "
    Case 26: Result = "Setecientos "
    Case 27: Result = "Ochocientos "
    Case 28: Result = "Novecientos "

  57. Mian Muazzam says:

    Sir, If We Want to Remove Cents What Will We Don Please Reply me

  58. Mian Muazzam says:

    Sir, If We Want to Remove Cents What Will We Don Please Reply me

  59. Joseph says:

    CAN I HAVE A CODE THAT CONVERTS 11 TO ONE ONE OR 22 TO TWO TWO?

  60. Chen says:

    Can i get rid of the dollar / dollars word?

    example: 6,130.20 = Six Thousand One Hundred Thirty and Twenty Cents

  61. ICE LEE says:

    if required "27605.02" to Twenty Seven Thousand Six Hundred and Five and 02/100?

  62. malinda says:

    i wont to convert amount in block letters. how to do it

    • Doug says:

      Malinda:
      If the "block letters" are text the answer is the VBA code above or a third party tool. If the letters are not text, but a picture or something else, you'll have to type them as text.

  63. Aziz says:

    Why i can't get the right word

    For example 760.75

    Ringgit Malaysia seventy six thousand seventy five only

    Can u help me

  64. Aziz says:

    Why i can't get the right word

    For example 760.75

    Ringgit Malaysia seventy six thousand seventy five only

    But if no cents, the word is right

    Can u help me

  65. Gayathri says:

    How to convert lakhs into words

  66. Sujan jk says:

    What if I only wanted dollar not the cents.

  67. RichieSalan says:

    does anyone here know how to program this:

    Php9,876,543.10

    Nine Million Eight Hundred Seventy-Six Thousand Five Hundred Forty-Three Pesos and 10/100

    How to format this?

  68. Aditha Karunarathna says:

    Here are the cordings for Rupee Values

    Option Explicit
    'Main Function
    Function SpellNumber(ByVal MyNumber)
    Dim Rupees, 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 Rupee 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 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 Rupee"
    Case Else
    Rupees = Rupees & " Rupees"
    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 = Rupees & 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

  69. CHNADAN ARYA says:

    SIR HOW CUT AND PAST THIS FUNCTION IN EXCEL SPREAD SHEET

  70. Keith says:

    Thank you everyone who made and updated this code. I appreciate it very much.

    There was a small glitch if the ones digit was a zero, where $820.00 would read "Eight hundred Twenty and No Cents" (two spaces between "Twenty" and "and"). I remedied this by removing the space in front of Thousand, Million, Billion, Trillion, as well as the statements for cents, and Hundred. Then I added a space to the end of Ten through Nineteen, and Twenty through Ninety in GetTens, and One through Nine in GetDigit.

    I am trying to come up with a means to hyphenate a two-digit number like 32 (Thirty-Two) while also leaving off the hyphen from two-digit number ending in 0 like 50 (Fifty). Any suggestions are welcome.

  71. Thirumalai Selvan says:

    How to convert the 1,234 into One Thousand two hundred and thirty four

  72. Ratha says:

    Hello

    I want convert to Quantity PCS example : one hundred and ten pcs only.

    but i don't know how to write down code

  73. calven says:

    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?

    • basha says:

      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

  74. Sir Daniel says:

    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

  75. Shubham says:

    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

  76. hari singh says:

    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.

  77. hari singh says:

    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.

  78. Eswari says:

    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

  79. Ehtisham says:

    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.

  80. Nirmal says:

    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

  81. Faten says:

    Thank you !
    Well done for Dinars and Euros !

  82. Jai says:

    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.

  83. akshita bhutaiya says:

    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

  84. akshita bhutaiya says:

    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

  85. Sir Banter says:

    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

  86. kunal says:

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

  87. Win says:

    I Like This

  88. Jaseem says:

    Hi,

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

  89. Ependra Singh says:

    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

  90. Michael James says:

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

  91. sandip says:

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

  92. Arvind says:

    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

  93. Phaneth says:

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

  94. Satham says:

    How not spelled if no cents.

  95. Titigh says:

    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"

  96. Aple says:

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

    I followed your instructions and it works!

  97. VISHAL SONI says:

    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.

  98. Kieron Morrow says:

    Can anyone help with it converting negative numbers?

    for example:

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

  99. AK1 says:

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

  100. Bryan says:

    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

Post a comment



Unfortunately, due to the volume of comments received we cannot guarantee that we will be able to give you a timely response. When posting a question, please be very clear and concise. We thank you for understanding!
60+ professional tools for Excel
60+ professional tools for Excel
2019–2007 to do your daily work
Incredible product, even better tech support…AbleBits totally delivers!
Deborah Bryant
Anyone who works with Excel is sure to find their work made easier
Jackie Lee
The best spent money on software I've ever spent!
Patrick Raugh
Ablebits is a fantastic product - easy to use and so efficient.
Debra Celmer
Excel is at its best now
Annie C.
I don't know how to thank you enough for your Excel add-ins
Jennifer Morningstar
Anybody who experiences it, is bound to love it!
Kumar Nepa
AbleBits suite has really helped me when I was in a crunch!
Nelda Fink
I have enjoyed every bit of it and time am using it
Christian Onyekachi Nwosu
It's the best $100 we've ever spent!
Mike Cavanagh
I love the program, and I can't imagine using Excel without it!
Robert Madsen
One word… WOW!
Dave Brown
Love the products!
David Johnston
It is like having an expert at my shoulder helping me…
Linda Shakespeare
Your software really helps make my job easier
Jeannie C.
Thanks for a terrific product that is worth every single cent!
Dianne Young
I love your product
Brad Gibson
Awesome!!!
Sheila Blanchard