Excel Formula to Convert Numbers to Words

Have you ever thought of an Excel formula that will convert Numbers to Words? i.e. A formula that can convert the number 456,571 into Four Hundred and Fifty Six Thousand Five Hundred and Seventy One.

In this blog post, I am sharing two Excel formulas that can convert Numbers in Words.

Pete M’s Formula

=CHOOSE(LEFT(TEXT(A1,"000000000"))+1,,"One","Two","Three","Four","Five","Six","Seven","Eight","Nine")&IF(--LEFT(TEXT(A1,"000000000"))=0,,IF(AND(--MID(TEXT(A1,"000000000"),2,1)=0,--MID(TEXT(A1,"000000000"),3,1)=0)," Hundred"," Hundred and "))&CHOOSE(MID(TEXT(A1,"000000000"),2,1)+1,,,"Twenty ","Thirty ","Forty ","Fifty ","Sixty ","Seventy ","Eighty ","Ninety ")&IF(--MID(TEXT(A1,"000000000"),2,1)<>1,CHOOSE(MID(TEXT(A1,"000000000"),3,1)+1,,"One","Two","Three","Four","Five","Six","Seven","Eight","Nine"),CHOOSE(MID(TEXT(A1,"000000000"),3,1)+1,"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"))&IF((--LEFT(TEXT(A1,"000000000"))+MID(TEXT(A1,"000000000"),2,1)+MID(TEXT(A1,"000000000"),3,1))=0,,IF(AND((--MID(TEXT(A1,"000000000"),4,1)+MID(TEXT(A1,"000000000"),5,1)+MID(TEXT(A1,"000000000"),6,1)+MID(TEXT(A1,"000000000"),7,1))=0,(--MID(TEXT(A1,"000000000"),8,1)+RIGHT(TEXT(A1,"000000000")))>0)," Million and "," Million "))&CHOOSE(MID(TEXT(A1,"000000000"),4,1)+1,,"One","Two","Three","Four","Five","Six","Seven","Eight","Nine")&IF(--MID(TEXT(A1,"000000000"),4,1)=0,,IF(AND(--MID(TEXT(A1,"000000000"),5,1)=0,--MID(TEXT(A1,"000000000"),6,1)=0)," Hundred "," Hundred and "))&CHOOSE(MID(TEXT(A1,"000000000"),5,1)+1,,,"Twenty ","Thirty ","Forty ","Fifty ","Sixty ","Seventy ","Eighty ","Ninety ")&IF(--MID(TEXT(A1,"000000000"),5,1)<>1,CHOOSE(MID(TEXT(A1,"000000000"),6,1)+1,,"One","Two","Three","Four","Five","Six","Seven","Eight","Nine"),CHOOSE(MID(TEXT(A1,"000000000"),6,1)+1,"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"))&IF((--MID(TEXT(A1,"000000000"),4,1)+MID(TEXT(A1,"000000000"),5,1)+MID(TEXT(A1,"000000000"),6,1))=0,,IF(OR((--MID(TEXT(A1,"000000000"),7,1)+MID(TEXT(A1,"000000000"),8,1)+RIGHT(TEXT(A1,"000000000")))=0,--MID(TEXT(A1,"000000000"),7,1)<>0)," Thousand "," Thousand and "))&CHOOSE(MID(TEXT(A1,"000000000"),7,1)+1,,"One","Two","Three","Four","Five","Six","Seven","Eight","Nine")&IF(--MID(TEXT(A1,"000000000"),7,1)=0,,IF(AND(--MID(TEXT(A1,"000000000"),8,1)=0,--RIGHT(TEXT(A1,"000000000"))=0)," Hundred "," Hundred and "))&CHOOSE(MID(TEXT(A1,"000000000"),8,1)+1,,,"Twenty ","Thirty ","Forty ","Fifty ","Sixty ","Seventy ","Eighty ","Ninety ")&IF(--MID(TEXT(A1,"000000000"),8,1)<>1,CHOOSE(RIGHT(TEXT(A1,"000000000"))+1,,"One","Two","Three","Four","Five","Six","Seven","Eight","Nine"),CHOOSE(RIGHT(TEXT(A1,"000000000"))+1,"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"))

This awesome formula was developed by Pete M, a commercial manager/consultant, and was shared with the public by the Excel MVP Leila Gharani in her blog post.

Note:
The formula assumes that you have the number in the cell A1.
The formula will ignore numbers after decimal.

Chandoo’s Formula

Here is a similar formula created by the Excel MVP Chandoo that will convert Numbers into English Words. This formula uses the LET function which is currently available to Office 365 subscribers.

=LET(
th, INT(A1/1000),
th.h, MOD(th/100, 10),
th.t, MOD(th, 100),
th.tens1, INT(th.t/10),
th.tens2, MOD(th.t,10),
h,MOD(A1/100,10),
t, MOD(A1,100),
tens1, INT(t/10),
tens2, MOD(t,10),
tys, {"twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"},
upto19, {"one","two","three","four","five","six","seven","eight",
"nine","ten","eleven","twelve","thirteen","fourteen","fifteen",
"sixteen","seventeen","eighteen","nineteen"},
CONCAT(IF(th<1, "", IF(th.h>=1,INDEX(upto19,th.h)&" hundred ","") &
IF(th.t<1,"", IF(th.tens1<2,INDEX(upto19, th.t), INDEX(tys,th.tens1-1) & IF(th.tens2>=1,"-"&INDEX(upto19,th.tens2),"")))&
" thousand "),
IF(h>=1,INDEX(upto19,h)&" hundred ",""),
IF(t<1,"", IF(tens1<2,INDEX(upto19, t), INDEX(tys,tens1-1)& IF(tens2>=1,"-"&INDEX(upto19,tens2),"")))))

Chandoo, in his blog post has explained this formula in detail and has also done a video on the same.

Note:
This formula works up to numbers 999,999 only and will ignore numbers after decimal.

Download the workbook

Excel workbook with Formulas to convert Numbers into Words

UDF to convert Numbers into Words

If you are comfortable using VBA, the following is a blog post that explains a User Defined Function in Excel that will convert Numbers into Words.

User Defined Function to convert Numbers in Words


LET Function in Excel

New Dynamic Array Functions in Excel

Excel Tables

Formula Errors in Excel

STOCKHISTORY Function in Excel