Excel Formula to Convert Numbers to Words

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.

fx=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")))
ProblemWrite a number in words
Functions usedCHOOSE, TEXT, MID, IF, TRIM
Works inAll Excel versions; up to 999,999,999

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")))
Excel formula converting numbers to words in international format

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.

Download .xlsx

Related