Convert Numbers to Words in Google Sheets: Formula

If you use Google Sheets for creating invoices, salary slips, purchase orders, or sales orders, you may want to convert numbers to words. This may be to comply with regulations or to make the numbers easier to read. Whatever the reason, I have written a formula and a custom-named function for it.

Before proceeding, please note that my formula is coded to convert numbers up to 8 digits long, meaning from 1 to 99,999,999.00

Four Ways to Convert Numbers to Words in Google Sheets

There are four ways to convert numbers to words in Google Sheets:

  1. Using a formula.
  2. Using a custom-named function.
  3. Using the BAHTTEXT native function.
  4. Using a supported add-on or Google Apps Script.

In this post, I will provide my custom-coded formula and a named function based on it that you can import into your Sheet and use. The output will be in an international system.

If you want to use an add-on, you can find one in the Google Workspace Marketplace. You can go to the Marketplace from the Extensions menu in your Sheet.

The BAHTTEXT function is already featured in my function guide. This native Google Sheets function converts a number into Thai text. You can translate it into English and use it to some extent, but it has limitations that I already mentioned in that tutorial.

Formula to Convert Numbers to Words in Google Sheets

To convert numbers to words in Google Sheets, you can use the following formula:

=INDEX(TRIM(LET(n,INT(B7),vrA,SEQUENCE(9),vrB,SEQUENCE(10,1,10),vrC,SEQUENCE(8,1,20,10),vrD,VSTACK("One","Two","Three","Four","Five","Six","Seven","Eight","Nine"),vrE,VSTACK("Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"),vrF,VSTACK("Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"),td," Thousand ",hd," Hundred ",mn," Million ",ln,VALUE(LEFT(n,2)),fv,RIGHT(n,5),le,LEN(fv),ltdn,XLOOKUP(SEQUENCE(5),IF(le=1,"",le),VALUE(RIGHT(fv,2)),),rgA,VSTACK(VALUE(MID(fv,SEQUENCE(5),1)),VALUE(MID(LEFT(TEXT(n,"00000000"),3),SEQUENCE(3,1,3,-1),1))),rgB,XLOOKUP(rgA,vrA,vrD,IF(,,)),rgC,XLOOKUP(ltdn,vrB,vrE,IF(,,)),rgD,XLOOKUP(IF(ltdn-rgA>0,ltdn-rgA,),vrC,vrF,IF(,,)),z,INDEX(rgA,1),w,INDEX(rgA,2),ww,INDEX(rgA,3),uu,INDEX(rgA,6),u,INDEX(rgA,7),a,INDEX(rgB,1),aa,INDEX(rgB,2),aaa,INDEX(rgB,3),aaaa,INDEX(rgB,4),aaaaa,INDEX(rgB,5),aaaaaa,INDEX(rgB,6),pq,INDEX(rgB,7),b,INDEX(rgC,2),bb,INDEX(rgC,3),bbb,INDEX(rgC,4),bbbb,INDEX(rgC,5),c,INDEX(rgD,2),cc,INDEX(rgD,3),ccc,INDEX(rgD,4),cccc,INDEX(rgD,5),xl,XLOOKUP(VALUE(LEFT(fv,2)),vrB,vrE,0),xll,XLOOKUP(IF(VALUE(LEFT(fv,2))-INDEX(rgA,2)>0,VALUE(LEFT(fv,2))-INDEX(rgA,2),""),vrC,vrF,IF(,,)),codeAA,IFS(AND(le=5,xl>0,ww=0),xl&td&" "&aaa,AND(le=5,xl=0,ww=0),xll&" "&aa&td&" "&aaa,AND(le=5,xl>0,ww>0),xl&td&" "&aaa&hd,AND(le=5,xl=0,ww>0),xll&" "&aa&td&" "&aaa&hd,1=1," "),testA,XLOOKUP(ln,vrB,vrE,IF(,,)),testB,XLOOKUP(IF(ln-u>0,ln-u,),vrC,vrF,IF(,,)),codeA,IFS(AND(testA>0,uu>0),testA&mn,AND(testB>0,uu>0),testB&" "&pq&mn,AND(testA>0,uu=0),testA&mn,AND(testB>0,uu=0),testB&" "&pq&mn,1=1," "),codeB,IFS(AND(le=5,bbbb>0),bbbb,AND(le=5,bbbb=0),cccc&" "&aaaaa,1=1," "),codeC,IFS(AND(n>999999,z=0,w=0,ww=0,uu=0)," ",AND(n>999999,z=0,w=0,ww>0,uu=0),REPLACE(codeAA,1,10,""),1=1,codeAA),IFS(le=1,a,AND(b>0,le=2),b,AND(b=0,le=2),c&" "&aa,AND(le=3,bb=0),a&hd&cc&" "&aaa,AND(le=3,bb>0),a&hd&bb,AND(le=4,bbb>0,w=0),a&td&aa&bbb,AND(le=4,bbb=0,w=0),a&td&aa&ccc&" "&aaaa,AND(le=4,bbb>0,w>0),a&td&aa&hd&bbb,AND(le=4,bbb=0,w>0),a&td&aa&hd&ccc&" "&aaaa,AND(n>9999,n<100000),codeC&" "&codeB,AND(n>99999,n<1000000),aaaaaa&hd&" "&codeC&" "&codeB,AND(n>999999,n<10000000,uu>0),pq&mn&aaaaaa&hd&" "&codeC&" "&codeB,AND(n>999999,n<10000000,uu=0),pq&mn&" "&codeC&" "&codeB,AND(n>9999999,n<100000000,uu>0),codeA&" "&aaaaaa&hd&" "&codeC&" "&codeB,AND(n>9999999,n<100000000,uu=0),codeA&" "&codeC&" "&codeB))))

The above formula converts the number in cell B7 into words in the international system. When you use the formula, just replace B7 with the cell reference containing the number.

Screenshot of a Google Sheets formula to convert numbers to words.
Figure 1

Note: The cell reference only appears once in the formula, making it very convenient to use.

The number-to-words converter formula has the following features:

  • It is a combination formula and does not require any helper cells.
  • It converts the numbers from 1 to 99,999,999.
  • When the cell containing the number contains decimals, it converts the integer part only. The decimal part is ignored. You can use the ROUND, ROUNDDOWN, or ROUNDUP functions to round the number before converting it to words. For example, you can replace B7 with ROUND(B7).

Named Function to Convert Numbers to Words in Google Sheets

If you prefer a much cleaner way to convert numbers to words in the international system in Google Sheets, you can use my custom-named function, NumberToWords().

Syntax of the NumberToWords custom-named function:

NUMBERTOWORDS(number)

This carries all the features of the above number-to-word converter formula.

Here are some examples of how to use NumberToWords in Google Sheets:

=NUMBERTOWORDS(125055) // Returns “One Hundred Twenty Five Thousand Fifty Five”
=NUMBERTOWORDS(A1) // Converts the number in cell A1 to words
=NUMBERTOWORDS(ROUND(A1)) // Rounds and converts the number in cell A1 to words

Custom Google Sheets named function to convert numbers to words.
Figure 2

To use the NumberToWords function, you need to import it into the sheet you want to use. If you want to use it in multiple sheets, you can import it into each sheet or make a copy of the first sheet.

Follow these three steps to import NumberToWords and convert numbers to words in your Google Sheets:

  1. Make a copy of my sample sheet.
  2. Open the sheet in which you want to use the function.
  3. Go to the Data menu > Named functions and click Import function.

NumberToWords Array Formula

We usually use the ARRAYFORMULA function in Google Sheets to expand a formula result, but it does not work with the NumberToWords custom-named function.

However, you can still convert multiple numbers to words in one go using NumberToWords and the MAP lambda function.

Here is the generic formula:

=MAP(array,LAMBDA(r, NUMBERTOWORDS(r)))

Replace array with the cell range that contains the numbers. For example, to convert the numbers in the range C3:C7 to words, you can use the following formula in cell D3, assuming that D3:D7 is empty:

=MAP(A1:A10,LAMBDA(r, NUMBERTOWORDS(r)))

Array formula in Google Sheets to convert numbers to words for multiple cells at once.
Figure 3

Conclusion

You can use the UPPER, LOWER, and PROPER functions with the above number verbalizer function to format the converted numbers to words in Google Sheets.

You can also prefix or suffix custom text, such as “Rupees” or “Only”.

Here are a few examples:
=UPPER(NUMBERTOWARDS(1502)) // Returns ONE THOUSAND FIVE HUNDRED TWO
=NUMBERTOWORDS(1502)&" Only" // Returns One Thousand Five Hundred Two Only
="Rupees "&NUMBERTOWARDS(1502)&" Only" // Returns Rupees One Thousand Five Hundred Two Only

Related Reading:

  1. How to Create Named Functions in Google Sheets
  2. Convert Time Duration to Day, Hour, Minute in Google Sheets
  3. Create Unit Converter in Google Sheets Using the Convert Function
  4. How to Convert Currency Text to Number in Google Sheets
  5. How to Convert Currency in Google Sheets Using GoogleFinance Function

Learn more about Google Sheets on Crawlan.com

Related posts