By Greg Nowak. Updated 1 November 2026.
If you need an invoice or payment form to show an amount in words, Excel’s BAHTTEXT() looks promising—until the result appears in Thai. The function converts numbers into Thai currency wording. There is no language argument that switches it to English.
For English amounts, a custom function is a common approach. The useful choice depends on who prepares the document, where they open the workbook, and how often the wording must update. Here is how to choose a method and make it dependable enough for a shared business process.
What BAHTTEXT does—and where it stops
Put 1234 in cell A2, then enter =BAHTTEXT(A2) in another cell. Excel returns หนึ่งพันสองร้อยสามสิบสี่บาทถ้วน: Thai wording for 1,234 baht. The input can also be a number or a formula, as described in Microsoft’s BAHTTEXT documentation.
Changing the input cell’s currency format to dollars or pounds does not translate the output or change its currency meaning. Use BAHTTEXT when the document actually needs Thai baht wording. Keep the numeric amount in a separate cell for calculations.
Is there an English version of BAHTTEXT?
Excel has no matching built-in English SpellNumber() function. You may see that name in tutorials, but it refers to custom code someone has added.
The TEXT() function solves a different problem. For example, =TEXT(A2,"#,##0.00") produces formatted digits, such as 1,234.00. It does not produce “one thousand two hundred thirty-four.” Microsoft’s TEXT guidance confirms this distinction and points to VBA for spelling numbers in English.
Before commissioning code, check whether the receiving organisation requires words at all. For an occasional document, typing and checking the wording may take less effort than maintaining a custom workbook.
| Your situation | Practical approach | Main check |
|---|---|---|
| Thai baht amounts | Use =BAHTTEXT(A2). |
Have someone who reads Thai confirm the document wording. |
| A few English documents | Write the amount manually. | Compare it with the final numeric total before sending. |
| Recurring forms in desktop Excel | Use a reviewed VBA number-to-words function. | Confirm currency rules and whether the team can run VBA. |
| A process used mainly in a browser | Use a reviewed formula-only solution or generate words in the document system. | Check Excel compatibility, maintenance ownership, and how updates happen. |
Set up an English custom function in desktop Excel
If your team uses desktop Excel and permits VBA, a custom function can keep the written amount linked to the total. Start with code reviewed for your required currency and wording; a function called SpellNumber is not necessarily suitable just because its name looks familiar.
- Open the workbook in desktop Excel. On Windows, press
Alt+F11to open the Visual Basic Editor. - Select the intended workbook in the Project Explorer, choose
Insert > Module, and add the reviewed function and its helper functions. - Return to the worksheet. If the function is named
SpellNumberand accepts one amount, enter=SpellNumber(A2). - Save through
File > Save Asas anExcel Macro-Enabled Workbook (*.xlsm).
Microsoft explains the custom-function mechanism; its example teaches the setup rather than supplying an English currency converter. Microsoft’s file-format reference confirms that .xlsm stores VBA code and .xlsx does not.
If you get #NAME?, check that the function name matches and that its code is available. A function stored in a separate workbook requires that workbook to be open and the reference to be correct. Keeping reviewed code with the shared form avoids a dependency on someone’s personal workbook.
Agree on the wording before testing the code
“One hundred dollars and five cents” and “one hundred and 05/100” are different output requirements. Ask the document owner to approve examples covering the currency name, fractional units, use of “and,” and whether wording such as “only” is required. Do not assume a dollar-based example can be reused for every currency by changing one label.
For a two-decimal currency, make rounding explicit. One possible layout is to keep the calculated total in A2, put =ROUND(A2,2) in B2, and use =SpellNumber(B2) for the words. The document’s numeric total should also use B2. Formatting A2 to show two decimals alone does not change its underlying value.
Keep a small test sheet with approved expected wording. Include 0, 1, 0.01, 100.05, 999.99, and 1000, plus a large amount and a rounding boundary such as 999.999. Check blanks, text inputs, and negative amounts separately. Unsupported inputs should produce a clear error or validation message rather than plausible but incorrect wording.
Check the handover, especially for browser users
Excel for the web cannot create, run, or edit VBA macros, although it can open and edit workbooks containing them. A VBA function therefore cannot provide dependable live conversion in a browser workflow.
If recipients only need the finished document, generate and check it in desktop Excel, then send a PDF. If they need to change amounts, choose a method that works in their environment. Formula-only converters need the same review of wording, supported values, and Excel versions as VBA.
Before handing over an agency template or operations workbook, have another team member reopen it on their own machine, change an amount, and produce the final document. Confirm that the code is approved under their macro policy. Add a short instructions sheet naming the input cell, supported currency, required app, and person responsible for changes.
If this small formula has become a recurring source of checking and rework, I can help review the workbook, agree the wording rules, and make the handover clearer. Talk to me about your spreadsheet workflow.
Related on GrN.dk
- Agentic AI: How It Works and When It’s Worth Using
- Drupal Wiki: Build a Knowledge Base People Can Actually Use
- Google Review Link Generators: What Small Teams Actually Need
Need help with this kind of work?
Talk to Greg about your spreadsheet workflow Get in touch with Greg.