How to spell out or convert numbers to English words in Excel?

Supposing you have a lot of price amount numbers, and now you need to convert or spell out them to text strings. For example, convert $123.55 to the English words one hundred twenty-three dollars and fifty five cents. In Excel there are no effective facility to solve this problem but using the long and complex VBA code. In this article, I will introduce you some methods to deal with it.

Spell out or convert numbers to English words with VBA code

Spell out or convert numbers to English words with Kutools for Excel


Spell out or convert numbers to English words with VBA code

The following long VBA code can help you to spell out numbers to text strings. Do as follows:

1. Hold down the ALT + F11 keys, and it opens the Microsoft Visual Basic for Applications window.

2. Click Insert > Module, and paste the following macro in the Module window.

VBA: Spell out currency numbers to English words in Excel

Function SpellNumberToEnglish(ByVal pNumber)
'Updateby20131113
Dim Dollars, Cents
arr = Array("", "", " Thousand ", " Million ", " Billion ", " Trillion ")
pNumber = Trim(Str(pNumber))
xDecimal = InStr(pNumber, ".")
If xDecimal > 0 Then
    Cents = GetTens(Left(Mid(pNumber, xDecimal + 1) & "00", 2))
    pNumber = Trim(Left(pNumber, xDecimal - 1))
End If
xIndex = 1
Do While pNumber <> ""
    xHundred = ""
    xValue = Right(pNumber, 3)
    If Val(xValue) <> 0 Then
        xValue = Right("000" & xValue, 3)
        If Mid(xValue, 1, 1) <> "0" Then
            xHundred = GetDigit(Mid(xValue, 1, 1)) & " Hundred "
        End If
        If Mid(xValue, 2, 1) <> "0" Then
            xHundred = xHundred & GetTens(Mid(xValue, 2))
        Else
            xHundred = xHundred & GetDigit(Mid(xValue, 3))
        End If
    End If
    If xHundred <> "" Then
        Dollars = xHundred & arr(xIndex) & Dollars
    End If
    If Len(pNumber) > 3 Then
        pNumber = Left(pNumber, Len(pNumber) - 3)
    Else
        pNumber = ""
    End If
    xIndex = xIndex + 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
SpellNumberToEnglish = Dollars & Cents
End Function
Function GetTens(pTens)
Dim Result As String
Result = ""
If Val(Left(pTens, 1)) = 1 Then
    Select Case Val(pTens)
        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
Select Case Val(Left(pTens, 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(pTens, 1))
End If
GetTens = Result
End Function
Function GetDigit(pDigit)
Select Case Val(pDigit)
    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

3. Then save the code, and return to the worksheet, in the adjacent Cell B2, enter the formula =SpellNumberToEnglish(A1), see screenshot:

4. Then press Enter key, and select the Cell B2, then drag the fill handle over to the range that contains this formula as you need. And all of the currency numbers have been spelt out to English words. See screenshot:

Note: As they are formulas, when you need to copy and paste them, please paste as values.


Spell out or convert numbers to English words with Kutools for Excel

Maybe the above long code can make you be mad, please don't worry, here I can give you an easy and quick way to solve it. With the Kutools for Excel’s Numbers to Words function, you can quickly and conveniently convert the numbers to text strings.

Kutools for Excel- Includes more than 300 handy tools for Excel. Full feature free trial 30-day, no credit card required! Get It Now

1. Select the range numbers that you want to spell out, and click Kutools > Content > Numbers to Words.
doc kutools number to words 1

2. In the popping out dialog box, choose English from the Languages. And you can preview the results from the right Preview Pane. See screenshot:
doc kutools number to words 2

3. Then click Ok or Apply. And all of the price amount numbers have been converted to text strings in the original range.
doc kutools number to words 3

Note: If you just want to convert numbers to English words (not currency), please check Not converted to Currency checkbox.
doc kutools number to words 3 doc kutools number to words 3

This fantastic feature of Numbers to Words can easily translate currency numbers to the text of currency in English or Chinese, such as translate 32.01 to "Thirty-two dollars and one cent" or "叁拾贰元零壹分". Have a Free Trial!

Demo: Spell out currency numbers to English words


The Best Office Productivity Tools

Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%

  • Reuse: Quickly insert complex formulas, charts and anything that you have used before; Encrypt Cells with password; Create Mailing List and send emails...
  • Super Formula Bar (easily edit multiple lines of text and formula); Reading Layout (easily read and edit large numbers of cells); Paste to Filtered Range...
  • Merge Cells/Rows/Columns without losing Data; Split Cells Content; Combine Duplicate Rows/Columns... Prevent Duplicate Cells; Compare Ranges...
  • Select Duplicate or Unique Rows; Select Blank Rows (all cells are empty); Super Find and Fuzzy Find in Many Workbooks; Random Select...
  • Exact Copy Multiple Cells without changing formula reference; Auto Create References to Multiple Sheets; Insert Bullets, Check Boxes and more...
  • Extract Text, Add Text, Remove by Position, Remove Space; Create and Print Paging Subtotals; Convert Between Cells Content and Comments...
  • Super Filter (save and apply filter schemes to other sheets); Advanced Sort by month/week/day, frequency and more; Special Filter by bold, italic...
  • Combine Workbooks and WorkSheets; Merge Tables based on key columns; Split Data into Multiple Sheets; Batch Convert xls, xlsx and PDF...
  • More than 300 powerful features. Supports Office/Excel 2007-2019 and 365. Supports all languages. Easy deploying in your enterprise or organization. Full features 30-day free trial. 60-day money back guarantee.
kte tab 201905

Office Tab Brings Tabbed interface to Office, and Make Your Work Much Easier

  • Enable tabbed editing and reading in Word, Excel, PowerPoint, Publisher, Access, Visio and Project.
  • Open and create multiple documents in new tabs of the same window, rather than in new windows.
  • Increases your productivity by 50%, and reduces hundreds of mouse clicks for you every day!
officetab bottom
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    saravanaprakash · 5 years ago
    How can i change the 169531535.25 - Sixteen Crores Ninety Five lakhs Thirty One Thousand Five Hundred Thirty Five and Twenty Five Paise
  • To post as a guest, your comment is unpublished.
    Gpaws1968 · 5 years ago
    How can I convert a number value into words 0.04 to say four thousandths, without the Dollars and Cents
  • To post as a guest, your comment is unpublished.
    ron · 5 years ago
    How can i improve this code that the result will be like this "One Hundred Ten Thousand and Twenty Cents (S110,000.20)"
  • To post as a guest, your comment is unpublished.
    TAPAN KUMAR JENA · 5 years ago
    can i change the value 3,25,655 as Three twenty five thousand six hundred fifty five to three lakh twenty five thousand six hundred fifty five. Please help thank you.
  • To post as a guest, your comment is unpublished.
    Carol Khor · 6 years ago
    I need the module code for spell number to change

    1,234,567.89
    into
    RINGGIT MALAYSIA : ONE MILLION TWO HUNDRED THIRTY FOUR THOUSAND FIVE HUNDRED SIXTY SEVEN AND EIGHTY NINE CENTS ONLY

    Thank you very much for your help.
    • To post as a guest, your comment is unpublished.
      X2H · 5 years ago
      Hi Carol, did u manage to get an answer on how to change the spell number to our RM?
  • To post as a guest, your comment is unpublished.
    Aleem · 6 years ago
    thank you really its very usefull
  • To post as a guest, your comment is unpublished.
    pingky · 6 years ago
    So Great! It helpful. But how can I put the word "Only" at the end.How to do. Following is our format.
    ***SINGAPORE DOLLARS SIX THOUSAND EIGHT HUNDRED AND FOURTEEN ONLY***
  • To post as a guest, your comment is unpublished.
    gunaraj · 6 years ago
    thanks for the formula, however, is it possible to get the word "Dollar/Rupees" as a prefix i.e. Rupees One thousand .... and Paisas thirty only.
    please help
  • To post as a guest, your comment is unpublished.
    Dom · 6 years ago
    You have done a great work and is very useful for me, awesome! But here is my question. Since i don't need any dollar and cents, just need the number spelled out, how can I change it??
  • To post as a guest, your comment is unpublished.
    Zakwan · 6 years ago
    [quote name="Firash"]Hi Sir,

    I tried to save the macro as you mentioned above. and it is working fine. but if i close the excel and open a new sheet, it is not working . pls help[/quote]

    I also faced same issue, any help please. thanks
    • To post as a guest, your comment is unpublished.
      Anna · 5 years ago
      Got it! after you paste the program you have to press Alt+Q then save type the file name and select "SAVE AS TYPE" Excel Macro-Enabled Workbook (*.xlsm)..
  • To post as a guest, your comment is unpublished.
    Mikee · 6 years ago
    how can i use same module in access VBA code?
  • To post as a guest, your comment is unpublished.
    Amar Srivastava · 6 years ago
    it's very useful for us thanks it's awesome.
  • To post as a guest, your comment is unpublished.
    Amar Srivastava · 6 years ago
    It's awesome....... this is useful for us.
  • To post as a guest, your comment is unpublished.
    Janine · 6 years ago
    This is awesome!! This is very helpful!
  • To post as a guest, your comment is unpublished.
    Bilash · 6 years ago
    Sophany: Plz save your file as a macro enable mode; hope it'll be work.
  • To post as a guest, your comment is unpublished.
    Sophany · 6 years ago
    I can use this code, but they haven't save and i didn't see what i have done with this code when i reopen the workbook.
  • To post as a guest, your comment is unpublished.
    Bilash · 6 years ago
    I need hepl on same issue "Example is in my general data is 50.576 but when I rounded it off and become 50.58, Words doesn't change/convert according to the new value".
  • To post as a guest, your comment is unpublished.
    roy · 6 years ago
    can anyone help me to spell only whole number not cents. ex. 125,685.25 spells as ONE HUNDRED TWENTY FIVE THOUSAND SIX HUNDRED EIGHTY FIVE & 25/100 ONLY. that's what i want please help me.

    thank you so much
    • To post as a guest, your comment is unpublished.
      Jairo Moreno · 4 years ago
      [quote name="roy"]can anyone help me to spell only whole number not cents. ex. 125,685.25 spells as ONE HUNDRED TWENTY FIVE THOUSAND SIX HUNDRED EIGHTY FIVE & 25/100 ONLY. that's what i want please help me.

      thank you so much[/quote]
      Yes, I was able to make it spell out everything but the cents, and give the cents in a 25/100 Cents format, instead of the "and 25 Cents" as given in the code. The first step is to declare a variable pCents, right where Cents is first declared. The next step is to insert a line of code just after the first time the variable Cents is calculated, and that line of code is "pCents = Left(Mid(pNumber, xDecimal + 1) & "00", 2)" not including the " at beginning and end. Then where Cents is about to be "printed out", replace the ending Cents with pCents and add "/100 Cents" That line should look like this: Cents = " and " & pCents & "/100 Cents" I may explain it better if there is an interest.
      • To post as a guest, your comment is unpublished.
        Staff · 3 years ago
        [quote name="Jairo Moreno"][quote name="roy"]can anyone help me to spell only whole number not cents. ex. 125,685.25 spells as ONE HUNDRED TWENTY FIVE THOUSAND SIX HUNDRED EIGHTY FIVE & 25/100 ONLY. that's what i want please help me.

        thank you so much[/quote]
        Yes, I was able to make it spell out everything but the cents, and give the cents in a 25/100 Cents format, instead of the "and 25 Cents" as given in the code. The first step is to declare a variable pCents, right where Cents is first declared. The next step is to insert a line of code just after the first time the variable Cents is calculated, and that line of code is "pCents = Left(Mid(pNumber, xDecimal + 1) & "00", 2)" not including the " at beginning and end. Then where Cents is about to be "printed out", replace the ending Cents with pCents and add "/100 Cents" That line should look like this: Cents = " and " & pCents & "/100 Cents" I may explain it better if there is an interest.[/quote]


        THANKS A LOT.. IT WORKS LIKE WONDER.. :lol:
        • To post as a guest, your comment is unpublished.
          girlsgeneration · 3 years ago
          [quote name="Staff"][quote name="Jairo Moreno"][quote name="roy"]can anyone help me to spell only whole number not cents. ex. 125,685.25 spells as ONE HUNDRED TWENTY FIVE THOUSAND SIX HUNDRED EIGHTY FIVE & 25/100 ONLY. that's what i want please help me.

          thank you so much[/quote]
          Yes, I was able to make it spell out everything but the cents, and give the cents in a 25/100 Cents format, instead of the "and 25 Cents" as given in the code. The first step is to declare a variable pCents, right where Cents is first declared. The next step is to insert a line of code just after the first time the variable Cents is calculated, and that line of code is "pCents = Left(Mid(pNumber, xDecimal + 1) & "00", 2)" not including the " at beginning and end. Then where Cents is about to be "printed out", replace the ending Cents with pCents and add "/100 Cents" That line should look like this: Cents = " and " & pCents & "/100 Cents" I may explain it better if there is an interest.[/quote]


          THANKS A LOT.. IT WORKS LIKE WONDER.. :lol:[/quote]

          Can you send me your codes? I don't get it. Mine always shows "00 /100 Only" even after changing the decimals and there's a space between the "00 /100". I hope you can help me.
  • To post as a guest, your comment is unpublished.
    SATHISH · 6 years ago
    hai, it was superb. but anyone help me to execute this as it is excluding money(dollar,cent,rupee,paisa,etc.)
  • To post as a guest, your comment is unpublished.
    HASNAIN SHAHID · 6 years ago
    Thanks for this Help
    its working :-)
  • To post as a guest, your comment is unpublished.
    Khalid · 6 years ago
    Fantastic. Thanks to Extend Office
  • To post as a guest, your comment is unpublished.
    vishal shah · 6 years ago
    I want to convert Metric weight from numbers to words.

    eg.
    1. 10.50 Metric Tons (MT) should write as "10 Tons and 500 kgs"
    2. 12.345 MT = Twelve Tons and Three hundred Forty Five Kgs

    Need 3 decimal places atleast and 4 is even better.
    max 9999.9999 is how i want.

    Can someone please help?
    • To post as a guest, your comment is unpublished.
      Islam · 4 years ago
      If you found please email me
      islamrafat@gmail.com
    • To post as a guest, your comment is unpublished.
      Islam · 4 years ago
      Please if you found the way... please email me
      islamrafat@gmail.com
      Thanks
  • To post as a guest, your comment is unpublished.
    Abdul Basit · 6 years ago
    I have conducted a research and could not be able to convert into Pakistan currency system, as we people use this format. 1,00,00,00,00,000.00 but excel use this format 1,000,000,000,000. and the code is in million and trillion formula. I tried to change lack, karor, arab and kharab instead of million, billion and trillion, but it will change only words and the system will remain same. like after change it will show this one. 100,000,000 it should be hundred million, but it will be shown hundred lakhs.If some one can help me i shall be thankfull to you.
  • To post as a guest, your comment is unpublished.
    PAWAN · 6 years ago
    THNX ATONE FOR SUCH TIPS
  • To post as a guest, your comment is unpublished.
    belle · 6 years ago
    its really helpful, really really big thanks :-)
  • To post as a guest, your comment is unpublished.
    Abhishek · 6 years ago
    wow great for the stuff i have been looking for a week. It works great.

    Thanks a lot
  • To post as a guest, your comment is unpublished.
    RICK · 6 years ago
    doesn't work. pop up says class not registered. no option to choose language. error code
  • To post as a guest, your comment is unpublished.
    Hameed · 6 years ago
    Thaks a lot, could you please let me now how can i get indian format(Rupees)
  • To post as a guest, your comment is unpublished.
    Rajendra singh · 6 years ago
    How Can i change amount in english words in indian currency
    • To post as a guest, your comment is unpublished.
      SANTHOSH KONDURU · 4 years ago
      HELLO
      JUS YOU CAN INSTALL SPEL CURR ADDIN YOU CAN CONVERT :) :) :lol:
    • To post as a guest, your comment is unpublished.
      shreesh garg · 6 years ago
      copy the above code language in a word sheet

      replace word "dollar" with "Rupees"
      Then
      Replace word "cents" with "Paisa"

      go back to excel file

      press alt+F11

      insert>>> module >> paste the entire word file till "end function"

      do .....=SpellNumberToEnglish(cellref)

      & you are good to go
      • To post as a guest, your comment is unpublished.
        Firash · 6 years ago
        Hi Sir,

        I tried to save the macro as you mentioned above. and it is working fine. but if i close the excel and open a new sheet, it is not working . pls help
  • To post as a guest, your comment is unpublished.
    Rajan · 6 years ago
    thanks for the formula, however, is it possible to get the word "Dollar/Rupees" as a prefix i.e. Rupees One thousand .... and Paisas thirty only.

    would really appreciate your response.
  • To post as a guest, your comment is unpublished.
    azhar · 6 years ago
    is it possible to get data as 100th after decimal, for example .100 answer shout be as 100 instead of ten
  • To post as a guest, your comment is unpublished.
    ATUL · 6 years ago
    dEAR SIR,


    Its is a very good formula, But I need the words in Indian formats
    PLEASE ADVICE
  • To post as a guest, your comment is unpublished.
    santosh · 6 years ago
    plx make me clear that how can I see it in my country's currency format i.e. Rupees in place of Dollars and Paisa in place of Cents.
  • To post as a guest, your comment is unpublished.
    Mahesh Giri · 6 years ago
    Its is a very good formula, But I need the words in Indian formats
  • To post as a guest, your comment is unpublished.
    jabesh · 6 years ago
    It's a well-working code. Thanks a lot.
  • To post as a guest, your comment is unpublished.
    know it all · 6 years ago
    Problem on rounding off with numbers.

    Example is in my general data is 50.576 but when I rounded it off and become 50.58, Words doesn't change/convert according to the new value.
  • To post as a guest, your comment is unpublished.
    heba · 6 years ago
    Thank you for your valuable information. I need to mention that it's Dirham and not dollar, how can i make it

    Thank you in advance
    • To post as a guest, your comment is unpublished.
      adel · 4 years ago
      I tried this and worked for me...
      go the module, ctrl F to find >>> then in the find put Dollar and then go to replace (in the same popup box) and put Dirham,
      it will work
    • To post as a guest, your comment is unpublished.
      jabesh · 6 years ago
      Please change all the words ~dollar/dollars" and ~cent/cents" in the code into your currency name.
  • To post as a guest, your comment is unpublished.
    i am not getting · 6 years ago
    I am not getting this formula in my Sheet, Can you show me in detail
  • To post as a guest, your comment is unpublished.
    Anees · 7 years ago
    Its Really Cool. And Fount its easy to change the Word " Dollar and Send to Rupees or any other currency we want by Copy pasting the cod to any other new word page and replacing the Same.