Excel can format a number any way you like, but it has no built-in function to write the number out in words. Cheques, invoices, purchase orders and legal documents all need the amount spelled out, and copying it by hand is where mistakes creep in.
This tool spells it out for you, and hands you the code to do the same thing inside your own workbook. Set the wording once on the left, and take it away as a worksheet formula that needs no macros, a LAMBDA function, or a VBA function. There is also a bulk converter if you just need a column of numbers turned into words right now.
What this converter does
One set of options drives four outputs, and all four produce identical wording for the same amount:
- A live converter. Type an amount, read it back in words straight away.
- An Excel formula. One long formula, no macros, works in Excel 2007 onward. The workbook stays an ordinary .xlsx file.
- A LAMBDA function. Store the logic once under a name and write
=NUM2WORDS(A1)in the sheet. Microsoft 365 and Excel 2024. - A VBA function. A
SpellNumberstyle function you can rename, for workbooks where macros are already in use. - A bulk list converter. Paste a column of numbers, copy the words back, or download both as a CSV.
Everything about the wording is yours to change: the currency and its sub-unit (Dollars and Cents, Rupees and Paise, Dirhams and Fils), the letter case, text before and after such as Total: and Only, the word joining the two halves of the amount, and the message shown when a cell is empty or holds something that is not a number.
International and Indian numbering
Choose International for thousands, millions, billions and trillions. Choose Indian for thousands, lakhs and crores, which is what you want for amounts in rupees on an Indian invoice or cheque. Above 99 crore the Indian setting continues with Arab, Kharab and Neel.
How to use it
Start in the options panel. Enter the cell your amount sits in, pick your numbering system, and if you are writing money, tick Name a currency and sub-unit and fill in the four words. Watch the live result until it reads exactly the way you want it, then pick up whichever method suits your version of Excel.
The Excel formula, no macros
- Open the Worksheet formula tab.
- Copy the formula.
- Paste it into the cell where you want the words to appear.
That is all there is to it. The formula reads whichever cell you named, so if your amount is in D7 rather than A1, change the cell reference in the options first and copy the formula again. Nothing to install, no macro warnings, and the file stays a normal .xlsx.
The LAMBDA function
- Open the LAMBDA tab and copy the formula.
- In Excel, go to Formulas › Name Manager › New.
- Type NUM2WORDS in the Name box.
- Paste the copied formula into Refers to, and choose OK.
You can now write =NUM2WORDS(A1) anywhere in the workbook. This needs Microsoft 365 or Excel 2024; Excel 2021 and earlier do not have LAMBDA, so use the worksheet formula instead.
The VBA function
- Open the VBA tab and copy the code.
- In Excel, press Alt + F11 to open the Visual Basic editor.
- Choose Insert › Module and paste the code into the blank window.
- Return to the sheet and write
=NumToWords(A1), or=AmountToWords(A1)if you named a currency. - Save the file as Excel Macro-Enabled Workbook (.xlsm).
That last step matters. A .xlsx file cannot store macros, so if you save as .xlsx the module is thrown away and the function stops working the next time you open the file.
Converting a whole column
- Copy the column of numbers in Excel.
- Open the Convert a list tab and paste them into the left box.
- Copy the words from the right box and paste them into the next column in your sheet.
Rows line up one for one, so the words land beside the right numbers. Amounts pasted straight out of Excel are fine as they are: currency symbols, thousands separators and negatives written in brackets are all understood. If you would rather keep both columns together, use Download CSV.
Straight from a link
The amount and the tab can both go in the address, which is handy for a bookmark of the setup you use every day, or for sending someone a worked example.
| Address | What opens |
|---|---|
| …/number-to-words-converter/?number=2500.75 | The converter with 2,500.75 already spelled out |
| …/number-to-words-converter/#ex-tab-vba | The VBA tab |
| …/number-to-words-converter/?number=12345678#ex-tab-lambda | The LAMBDA tab, with 12,345,678 in the box |
The four tab names are #ex-tab-formula, #ex-tab-lambda, #ex-tab-vba and #ex-tab-batch. Choosing a tab on the page updates the address as well, so you can simply copy whatever is in your browser bar and share the tab you are looking at. These links open the tab without scrolling you down the page.
?n= works as a shorter spelling of ?number=, and the amount may be written the way it appears in your sheet: ?number=$1,234.56 is understood, since currency symbols and thousands separators are ignored. Anything that is not a number simply shows the invalid-number message.
One thing a link cannot carry is the wording: the currency, numbering system, letter case and the rest are set in the options panel, not in the address.
Which method should you use?
| Excel formula | LAMBDA | VBA | |
|---|---|---|---|
| Works in | Excel 2007 and later | Microsoft 365, Excel 2024 | Excel with macros enabled |
| Save file as | .xlsx | .xlsx | .xlsm |
| Survives emailing the file | Yes | Yes | Only if the recipient allows macros |
| Setup needed | None, just paste | One entry in Name Manager | Paste a module, save as .xlsm |
| What the cell looks like | A very long formula | =NUM2WORDS(A1) |
=NumToWords(A1) |
In short: if you are sending the workbook to anyone else, use the worksheet formula, because it always arrives intact. On Microsoft 365, prefer LAMBDA for anything you maintain yourself, since the logic lives in one name instead of being copied into every cell. Choose VBA when the workbook already uses macros, or when you want the function available across a lot of sheets under a name of your own.
Examples
The same amount, worded for different jobs:
| Amount | Settings | In words |
|---|---|---|
| 1234.56 | No currency | One Thousand Two Hundred Thirty Four Point Five Six |
| 1234.56 | Dollars and Cents | One Thousand Two Hundred Thirty Four Dollars and Fifty Six Cents |
| 1234.56 | Indian, Rupees and Paise, suffix Only | One Thousand Two Hundred Thirty Four Rupees and Fifty Six Paise Only |
| 1234.56 | Dollars and Cents, UPPER CASE, suffix ONLY | ONE THOUSAND TWO HUNDRED THIRTY FOUR DOLLARS AND FIFTY SIX CENTS ONLY |
| 2500000 | Indian, Rupees, suffix Only | Twenty Five Lakh Rupees Only |
| 12345678 | Indian, Rupees, suffix Only | One Crore Twenty Three Lakh Forty Five Thousand Six Hundred Seventy Eight Rupees Only |
| 1000000 | International, no currency | One Million |
| 1500000 | International, comma between groups | One Million, Five Hundred Thousand |
| 0.75 | Dollars and Cents | Seventy Five Cents |
| -500 | No currency | Minus Five Hundred |
Good to know
Amounts are rounded to two decimals
An amount is rounded to two decimal places before it is put into words, in every one of the four methods. So 1.999 reads as two whole units rather than one unit and one hundred sub-units, and 1.567 gives fifty seven sub-units, not fifty six. That is what an invoice or a cheque needs, and it means the preview here and the formula in your sheet always agree.
The largest amount is just under 999 trillion
Excel stores numbers to fifteen significant digits, and beyond that it cannot hold the exact value, let alone spell it. Anything larger returns the out-of-range message instead of a wrong answer.
If Excel rejects the formula, check the list separator
Excel expects the parts of a formula separated the way your own installation writes them. Much of continental Europe and Latin America uses a semicolon rather than a comma. Change Formula list separator under Names in the generated code, copy the formula again, and it will paste cleanly.
Capitalise Each Word leaves your own words alone
Excel’s own PROPER function re-capitalises everything it touches, which turns USD into Usd. This tool never does that: the spelled-out number is capitalised, and any currency name, prefix or suffix you typed is used exactly as you wrote it. Pick UPPER CASE or lower case if you do want your own text changed as well.
Questions people ask
How do I convert numbers to words in Excel without VBA?
Use the Worksheet formula tab above. It generates one long formula built from
IF, LOOKUP and ROUND, so it runs in any Excel from 2007 onward and in Google Sheets, and the
file stays a normal .xlsx. On Microsoft 365 or Excel 2024 the LAMBDA tab is a better option:
you store the logic once under a name such as NUM2WORDS and then write
=NUM2WORDS(A1) in the sheet. Excel 2021 and earlier do not have LAMBDA.
What is the largest number this handles?
Just under 999 trillion, which is the point where Excel runs out of its 15 significant digits
of precision. Anything larger returns the out-of-range message. Amounts are rounded to two
decimal places, so 1.999 becomes two units rather than one unit and one hundred sub-units.
Can it write amounts in lakhs and crores?
Yes. Set Numbering system to Indian and 12,345,678 is read as
“One Crore Twenty Three Lakh Forty Five Thousand Six Hundred Seventy Eight”.
Above 99 crore it continues with the Indian scale names Arab (109),
Kharab (1011) and Neel (1013).
Why does my Excel reject the formula?
Almost always the list separator. Excel expects arguments separated the way your own
installation writes them, and much of continental Europe and Latin America uses a semicolon
rather than a comma. Switch Formula list separator under
“Names in the generated code” and copy the formula again.
Why does the VBA version stop working after I reopen the file?
The workbook was saved as .xlsx, which cannot store macros, so Excel discarded the module.
Save as Excel Macro-Enabled Workbook (.xlsm). If you would rather not deal with
macro warnings at all, use the worksheet formula or LAMBDA instead.
Does the same amount give the same words in all four?
Yes, deliberately. The preview, the worksheet formula, the LAMBDA and the VBA all round the
amount to two decimals first and then split it into units and sub-units, so an invoice total
reads identically no matter which one you use.
How can I configure the tool to convert numbers into dollars and cents?
“Hello! We are happy to help you with this. If you look at the ‘Options’ menu on the left side of the tool, click on ‘Currency’ and simply check the box that says ‘Name a currency and sub-unit.‘ It is already set up for Dollars and Cents by default, so once you check that box, your decimals will format perfectly! – PNRao