Excel has no built-in function to spell out numbers, but one long formula can do it: 456,571 becomes Four Hundred and Fifty Six Thousand Five Hundred and Seventy One. Copy the formula below, or for rupees in lakh and crore, use the RUPEES function instead.
Table of Contents
The formula (international format)
Put the number in B3, then copy this formula into C3. Use the Copy button: the formula is long, but you only need to paste it once and copy it down:
=TRIM(CHOOSE(LEFT(TEXT(B3,"000000000"))+1,,"One","Two","Three","Four","Five","Six","Seven","Eight","Nine")&IF(--LEFT(TEXT(B3,"000000000"))=0,,IF(AND(--MID(TEXT(B3,"000000000"),2,1)=0,--MID(TEXT(B3,"000000000"),3,1)=0)," Hundred"," Hundred and "))&CHOOSE(MID(TEXT(B3,"000000000"),2,1)+1,,,"Twenty ","Thirty ","Forty ","Fifty ","Sixty ","Seventy ","Eighty ","Ninety ")&IF(--MID(TEXT(B3,"000000000"),2,1)<>1,CHOOSE(MID(TEXT(B3,"000000000"),3,1)+1,,"One","Two","Three","Four","Five","Six","Seven","Eight","Nine"),CHOOSE(MID(TEXT(B3,"000000000"),3,1)+1,"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"))&IF((--LEFT(TEXT(B3,"000000000"))+MID(TEXT(B3,"000000000"),2,1)+MID(TEXT(B3,"000000000"),3,1))=0,,IF(AND((--MID(TEXT(B3,"000000000"),4,1)+MID(TEXT(B3,"000000000"),5,1)+MID(TEXT(B3,"000000000"),6,1)+MID(TEXT(B3,"000000000"),7,1))=0,(--MID(TEXT(B3,"000000000"),8,1)+RIGHT(TEXT(B3,"000000000")))>0)," Million and "," Million "))&CHOOSE(MID(TEXT(B3,"000000000"),4,1)+1,,"One","Two","Three","Four","Five","Six","Seven","Eight","Nine")&IF(--MID(TEXT(B3,"000000000"),4,1)=0,,IF(AND(--MID(TEXT(B3,"000000000"),5,1)=0,--MID(TEXT(B3,"000000000"),6,1)=0)," Hundred "," Hundred and "))&CHOOSE(MID(TEXT(B3,"000000000"),5,1)+1,,,"Twenty ","Thirty ","Forty ","Fifty ","Sixty ","Seventy ","Eighty ","Ninety ")&IF(--MID(TEXT(B3,"000000000"),5,1)<>1,CHOOSE(MID(TEXT(B3,"000000000"),6,1)+1,,"One","Two","Three","Four","Five","Six","Seven","Eight","Nine"),CHOOSE(MID(TEXT(B3,"000000000"),6,1)+1,"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"))&IF((--MID(TEXT(B3,"000000000"),4,1)+MID(TEXT(B3,"000000000"),5,1)+MID(TEXT(B3,"000000000"),6,1))=0,,IF(OR((--MID(TEXT(B3,"000000000"),7,1)+MID(TEXT(B3,"000000000"),8,1)+RIGHT(TEXT(B3,"000000000")))=0,--MID(TEXT(B3,"000000000"),7,1)<>0)," Thousand "," Thousand and "))&CHOOSE(MID(TEXT(B3,"000000000"),7,1)+1,,"One","Two","Three","Four","Five","Six","Seven","Eight","Nine")&IF(--MID(TEXT(B3,"000000000"),7,1)=0,,IF(AND(--MID(TEXT(B3,"000000000"),8,1)=0,--RIGHT(TEXT(B3,"000000000"))=0)," Hundred "," Hundred and "))&CHOOSE(MID(TEXT(B3,"000000000"),8,1)+1,,,"Twenty ","Thirty ","Forty ","Fifty ","Sixty ","Seventy ","Eighty ","Ninety ")&IF(--MID(TEXT(B3,"000000000"),8,1)<>1,CHOOSE(RIGHT(TEXT(B3,"000000000"))+1,,"One","Two","Three","Four","Five","Six","Seven","Eight","Nine"),CHOOSE(RIGHT(TEXT(B3,"000000000"))+1,"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen")))
The formula was created by Pete M and shared by Excel MVP Leila Gharani. Wrapping it in TRIM removes the extra spaces it leaves in results such as One Hundred Thousand.
Rupees in lakh and crore
For Indian invoices and cheques, the formula’s million-based wording isn’t right. Add the free RUPEES function once, from the Indian numbers to words macro, and use:
| Formula | Result |
|---|---|
=RUPEES(1250) |
Rupees One Thousand Two Hundred Fifty Only |
=RUPEES(1234567.5) |
Rupees Twelve Lakh Thirty Four Thousand Five Hundred Sixty Seven and Fifty Paise Only |
=RUPEES(25000000) |
Rupees Two Crore Fifty Lakh Only |
For a one-off amount, the number to words converter does it online, in Indian or international format.
Which method to use
| Method | Best for | Limits |
|---|---|---|
| This formula | Any version, no macros allowed | Whole numbers up to 999,999,999; no decimals |
| RUPEES function (VBA) | Indian invoices, cheques, receipts | Workbook saved as .xlsm, or code in PERSONAL.XLSB |
| Online converter | A quick one-off | Not linked to your cells |
Notes
- The formula ignores decimals. To spell out paise or cents, use the RUPEES function.
- Numbers above 999,999,999 return wrong words.
- Excel MVP Chandoo has also published a shorter version using LET for Microsoft 365, on his blog Chandoo.org.
Common errors
| Problem | Cause | Fix |
|---|---|---|
#VALUE! |
The cell contains text, not a number | Use VALUE, or remove spaces and symbols |
| Extra spaces | Formula used without TRIM | Wrap it in =TRIM(…) |
| Wrong words for large numbers | More than nine digits | Use the RUPEES function |
Practice file
The formula set up for six numbers, ready to copy into your own sheet.