A powerful, native Google Sheets formula to convert numerical amounts into words (text). It supports a few languages and currencies, handles grammar (gender, plurals), and processes decimal parts (cents/kopecks/pence).
Key Feature: It uses
LETandLAMBDAfunctions. No Apps Script required. It works instantly and doesn't trigger security warnings.
- ⚡ Zero Scripts: Pure formula logic. Blazing fast recalculations.
- 🌍 9 Languages: English (US/UK), German (DE), Spanish (ES), Italian (IT), French (FR), Dutch (NL), Polish (PL), Ukrainian (UA), Russian (RU).
- 💰 17 Currencies: USD, EUR, GBP, JPY, CHF, and 10 more.
- 🧠 Grammar Aware: * Handles currency gender (e.g., "One Dollar" vs "Одна Гривня").
- Handles pluralization rules for Slavic languages (1, 2-4, 5+).
- Handles German compound numbers (e.g., "einundzwanzig").
- 🪙 Smart Decimals: Converts cents, pence, kopecks, etc., respecting their gender and grammar.
There are two ways to use this. The recommended way is creating a Named Function.
This keeps your cells clean: =AMOUNT_TO_WORDS(A2, "USD", "EN").
- Open your Google Sheet.
- Go to Data > Named functions.
- Click Add new function.
- Function name:
AMOUNT_TO_WORDS - Argument placeholders:
valcurr_codetarget_lang
- Formula definition: Copy and paste the code from txt file into the definition box.
Now use it like this:
=AMOUNT_TO_WORDS(1250.50, "USD", "EN")
// Output: One Thousand Two hundred Fifty Dollars Fifty Cents
If you cannot or do not want to use Named Functions, you can paste the formula directly into a cell.
- Copy the code from the Source Code section above.
- Paste it into your target cell (e.g.,
D2). - Crucial Step: You must manually replace the variable names at the very top of the formula with your actual cell references.
Change this:
=LET(
val, val,
curr_code, UPPER(curr_code),
target_lang, UPPER(target_lang),
...
To this (example):
=LET(
val, A2, <-- Reference to your Number
curr_code, UPPER(B2), <-- Reference to Currency Code
target_lang, UPPER(C2), <-- Reference to Language Code
...
| 🌍 Language (Code) | Native Name | 💰 Currency (Code) | Currency Name | |
|---|---|---|---|---|
| EN | English | USD | US Dollar | |
| FR | French | EUR | Euro | |
| NL | Dutch | GBP | Pound Sterling | |
| DE | German | JPY | Japanese Yen | |
| ES | Spanish | CHF | Swiss Franc | |
| IT | Italian | CNY | Chinese Yuan | |
| UA | Ukrainian | CAD | Canadian Dollar | |
| PL | Polish | AUD | Australian Dollar | |
| RU | Russian | PLN | Polish Złoty | |
| UAH | Ukrainian Hryvnia | |||
| NZD | New Zealand Dollar | |||
| SGD | Singapore Dollar | |||
| HKD | Hong Kong Dollar | |||
| ZAR | South African Rand | |||
| SEK | Swedish Krona | |||
| NOK | Norwegian Krone | |||
| MXN | Mexican Peso |
- Max Value:
999,999,999,999.99(Up to 999 Billions). Numbers ≥ 1 Trillion are not supported in this version. - Rounding: Automatically rounds numbers to 2 decimal places (standard financial rounding).
- Case Sensitivity: Input codes are case-insensitive (
usd,USD,uSdwork equally well). - Compatibility: Requires Google Sheets or Excel 365/2021+. Will not work in older Excel versions that lack
LETandLAMBDAfunctions. - Grammar: Outputs text in the Nominative case (Standard for invoices, contracts, and checks).
- Negative Numbers: Currently outputs an error string
"Error: Negative".
Missing your language? You can add it by modifying two variables in the formula:
RAW_NUM_STR: Add your language code and the corresponding string of numerals (ones, teens, tens, hundreds, magnitudes) separated by~.RAW_CURR_STR: Add your currency definitions in the formatCODE|Main1|Main2|Main5|Gender|Sub1|Sub2|Sub5|GenderSub.
Instead of formatting these strings manually, I highly recommend using Gemini 3 Pro. It handles the array structures and linguistic logic perfectly.
Prompt example: > "Here is a Google Sheets LET formula. Please add Portuguese language support to the RAW_NUM_STR variable following the existing pattern."
This project is licensed under the MIT License - see the LICENSE file for details.
