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

Kutools for Excel: add 120 new features in Excel. Save one hour every day.
Classic Menu for Office: brings back classic menus to Office 2010 and 2013 (includes Office 365).
Office Tab: brings tabbed interface to Office as the use of web browser Chrome, Firefox and Internet Explorer.

arrow blue right bubble Spell out or convert numbers to English words with VBA code

Hot
Amazing! Using Tabs in Excel like Firefox, Chrome, Internet Explore 10!

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 Modulewindow.

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 E1, enter the formula =SpellNumberToEnglish(D1), see screenshot:

doc-spell-out-numbers1

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

doc-spell-out-numbers2

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


arrow blue right bubble 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 Spell Out Numbers function, you can quickly and conveniently convert the numbers to text Strings.

Kutools for Excel includes more than 120 handy Excel tools. Free to try with no limitation in 30 days. Get it Now.

When you have installed Kutools for Excel, please do as following steps:

1. Select the range numbers that you want to spell out.

2. Click Kutools > Content Converter > Spell Out Numbers. See screenshot:

doc-spell-out-numbers3

3. In the Spell Out Numbers dialog box, choose English from the Languages. And you can preview the results from the right Preview Pane. See screenshot:

doc-spell-out-numbers4

4. Then click OK or Apply. And all of the price amount numbers have been converted to text strings in the original range.

doc-spell-out-numbers5-2doc-spell-out-numbers6

Note: If you need the Chinese price amount words, please click Chinese option from the Languages.

Click Spell Out Numbers to know more about this feature.


Kutools for Excel

More than 120 Advanced Functions for Excel 2013, 2010, 2007 and Office 365.

screen shot

btn read more     btn download     btn purchase

Comments  

+1#Anees2013-12-03 06:22
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.
Reply | Reply with quote | Quote
+1#i am not getting2014-02-01 04:47
I am not getting this formula in my Sheet, Can you show me in detail
Reply | Reply with quote | Quote
+2#heba2014-02-19 08:40
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
Reply | Reply with quote | Quote
+1#jabesh2014-02-26 19:45
Please change all the words ~dollar/dollars" and ~cent/cents" in the code into your currency name.
Reply | Reply with quote | Quote
0#know it all2014-02-21 08:33
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.
Reply | Reply with quote | Quote
0#jabesh2014-02-26 19:49
It's a well-working code. Thanks a lot.
Reply | Reply with quote | Quote
0#Mahesh Giri2014-03-03 11:10
Its is a very good formula, But I need the words in Indian formats
Reply | Reply with quote | Quote
0#santosh2014-03-04 06:38
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.
Reply | Reply with quote | Quote
0#ATUL2014-03-18 11:18
dEAR SIR,


Its is a very good formula, But I need the words in Indian formats
PLEASE ADVICE
Reply | Reply with quote | Quote
+2#azhar2014-03-19 20:18
is it possible to get data as 100th after decimal, for example .100 answer shout be as 100 instead of ten
Reply | Reply with quote | Quote
0#Rajan2014-03-24 09:23
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.
Reply | Reply with quote | Quote
-1#Rajendra singh2014-03-26 09:20
How Can i change amount in english words in indian currency
Reply | Reply with quote | Quote
0#shreesh garg2014-04-17 06:16
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
Reply | Reply with quote | Quote
0#Firash2014-06-29 07:33
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
Reply | Reply with quote | Quote
0#Hameed2014-03-26 10:00
Thaks a lot, could you please let me now how can i get indian format(Rupees)
Reply | Reply with quote | Quote
0#RICK2014-03-29 16:52
doesn't work. pop up says class not registered. no option to choose language. error code
Reply | Reply with quote | Quote
0#Abhishek2014-04-09 07:38
wow great for the stuff i have been looking for a week. It works great.

Thanks a lot
Reply | Reply with quote | Quote
+2#belle2014-04-20 19:18
its really helpful, really really big thanks :-)
Reply | Reply with quote | Quote
0#PAWAN2014-04-23 10:36
THNX ATONE FOR SUCH TIPS
Reply | Reply with quote | Quote
0#Abdul Basit2014-04-24 10:24
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.
Reply | Reply with quote | Quote
0#vishal shah2014-05-05 09:57
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?
Reply | Reply with quote | Quote
0#Khalid2014-05-09 16:16
Fantastic. Thanks to Extend Office
Reply | Reply with quote | Quote
+1#HASNAIN SHAHID2014-05-13 06:49
Thanks for this Help
its working :-)
Reply | Reply with quote | Quote
0#SATHISH2014-06-12 11:43
hai, it was superb. but anyone help me to execute this as it is excluding money(dollar,cent,rupee,paisa,etc.)
Reply | Reply with quote | Quote
0#roy2014-06-19 08:18
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
Reply | Reply with quote | Quote
+1#Bilash2014-06-20 07:13
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".
Reply | Reply with quote | Quote
0#Sophany2014-06-25 03:06
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.
Reply | Reply with quote | Quote
0#Bilash2014-06-25 07:05
Sophany: Plz save your file as a macro enable mode; hope it'll be work.
Reply | Reply with quote | Quote
0#Janine2014-07-09 17:33
This is awesome!! This is very helpful!
Reply | Reply with quote | Quote
0#Amar Srivastava2014-07-15 10:36
It's awesome....... this is useful for us.
Reply | Reply with quote | Quote
0#Amar Srivastava2014-07-15 10:37
it's very useful for us thanks it's awesome.
Reply | Reply with quote | Quote
0#Mikee2014-07-18 13:03
how can i use same module in access VBA code?
Reply | Reply with quote | Quote

Add comment


Security code
Refresh