Excel does not have a built-in English worksheet function that changes 123 into One Hundred Twenty-Three. The TEXT function changes how a number is displayed—for example, =TEXT(1234.567,"$#,##0.00") returns $1,234.57—but it does not spell the number out.
For English number-to-words conversion, the dependable desktop-Excel method is to add a VBA user-defined function to the workbook and then use it in a cell like any other function. This tutorial also explains the built-in functions that are often mistaken for number-to-words tools, how to handle currency and decimals, and what to check when the result is wrong.
What Excel can—and cannot—do natively
| Function or feature | What it actually does | English number-to-words conversion? |
|---|---|---|
TEXT |
Formats a number as text, such as currency, percentages, or dates. | No |
VALUE |
Converts text representing a number back into a numeric value. | No |
VALUETOTEXT |
Converts a value to ordinary or strict text. | No |
BAHTTEXT |
Converts a number into Thai currency wording and adds a Baht suffix. | Not for English wording |
| Custom number format | Changes the visual display of a number. | No |
| VBA user-defined function | Runs custom conversion logic supplied by the workbook. | Yes |
Microsoft’s documentation for TEXT explicitly says that VBA is required for converting a number into words. Functions such as NUMBERTEXT and NUMBERTOWORDS are not standard English Excel functions unless an add-in, custom function, or other workbook code has supplied them.
Method 1: Convert a number to English words with VBA
The following function converts whole numbers into English words. It also handles negative values and rounds fractional values to two decimal places, displaying the fraction as cents over 100. For example, 1234.56 becomes One Thousand Two Hundred Thirty-Four and 56/100.
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
- Fundamental, two-line calculator that combines statistics and advanced scientific functions for high school math and science
- Two-line display shows the entry and calculated result at the same time for easy understanding of the calculation
- Fraction features, conversions, and basic scientific and trigonometric functions
- Solar and battery powered
- Approved for use on SAT, ACT and AP exams
Step 1: Open the Visual Basic Editor
- Open the workbook in desktop Excel.
- Open the Developer tab and select Visual Basic.
- If Developer is not visible in Windows, select File > Options > Customize Ribbon. Under Main Tabs, select Developer, then select OK.
- On Mac, select Excel > Preferences > Ribbon & Toolbar. Under Main Tabs, select Developer, then select OK.
Step 2: Insert a standard module
In the Visual Basic Editor, select Insert > Module. A standard module—not a worksheet module—is the appropriate place for a worksheet user-defined function.
Step 3: Paste the conversion code
Paste this code into the new module:
Option Explicit
Public Function SpellNumber(ByVal InputValue As Variant) As Variant
Dim amount As Double
Dim absoluteAmount As Double
Dim wholePart As Double
Dim cents As Long
Dim result As String
If IsError(InputValue) Then
SpellNumber = CVErr(xlErrValue)
Exit Function
End If
If Len(Trim$(CStr(InputValue))) = 0 Or Not IsNumeric(InputValue) Then
SpellNumber = CVErr(xlErrValue)
Exit Function
End If
amount = CDbl(InputValue)
'This routine is designed for values that Excel can represent reliably.
If Abs(amount) > 999999999999999# Then
SpellNumber = "Number too large"
Exit Function
End If
'Round to cents before separating the whole and fractional parts.
amount = Round(amount, 2)
absoluteAmount = Abs(amount)
wholePart = Fix(absoluteAmount)
cents = CLng((absoluteAmount - wholePart) * 100 + 0.000001)
'Protect against a floating-point value that rounds to 100 cents.
If cents = 100 Then
wholePart = wholePart + 1
cents = 0
End If
If wholePart = 0 Then
result = "Zero"
Else
result = IntegerWords(wholePart)
End If
If amount < 0 Then result = "Minus " & result
If cents > 0 Then
result = result & " and " & Format$(cents, "00") & "/100"
End If
SpellNumber = result
End Function
Private Function IntegerWords(ByVal numberValue As Double) As String
Dim labels As Variant
Dim i As Long
Dim divisor As Double
Dim groupValue As Long
Dim remaining As Double
Dim result As String
labels = Array("", "Thousand", "Million", "Billion", "Trillion")
remaining = numberValue
For i = UBound(labels) To 0 Step -1
divisor = 10 ^ (i * 3)
groupValue = Int(remaining / divisor)
If groupValue > 0 Then
result = result & UnderThousand(groupValue)
If Len(labels(i)) > 0 Then
result = result & " " & labels(i)
End If
result = result & " "
remaining = remaining - (groupValue * divisor)
End If
Next i
IntegerWords = Trim$(result)
End Function
Private Function UnderThousand(ByVal numberValue As Long) As String
Dim ones As Variant
Dim tens As Variant
Dim result As String
Dim hundreds As Long
Dim remainder As Long
ones = Array("Zero", "One", "Two", "Three", "Four", "Five", _
"Six", "Seven", "Eight", "Nine", "Ten", "Eleven", _
"Twelve", "Thirteen", "Fourteen", "Fifteen", _
"Sixteen", "Seventeen", "Eighteen", "Nineteen")
tens = Array("", "", "Twenty", "Thirty", "Forty", "Fifty", _
"Sixty", "Seventy", "Eighty", "Ninety")
If numberValue >= 100 Then
hundreds = numberValue 100
remainder = numberValue Mod 100
result = ones(hundreds) & " Hundred"
If remainder > 0 Then result = result & " " & UnderThousand(remainder)
ElseIf numberValue < 20 Then
result = ones(numberValue)
Else
result = tens(numberValue 10)
If numberValue Mod 10 > 0 Then
result = result & "-" & ones(numberValue Mod 10)
End If
End If
UnderThousand = result
End Function
Step 4: Return to the worksheet and use the function
Suppose cell A1 contains 1234567.89. In another cell, enter:
=SpellNumber(A1)
The result is:
One Million Two Hundred Thirty-Four Thousand Five Hundred Sixty-Seven and 89/100
SpellNumber is not an Excel built-in function. It works because the VBA procedure with that name is stored in the workbook.
Examples of the VBA result
| Input | Result |
|---|---|
0 |
Zero |
19 |
Nineteen |
42 |
Forty-Two |
105 |
One Hundred Five |
1234 |
One Thousand Two Hundred Thirty-Four |
-875.5 |
Minus Eight Hundred Seventy-Five and 50/100 |
12.999 |
Thirteen |
The code uses “One Hundred Five,” without “and” between the hundreds and tens. If your organization requires “One Hundred and Five,” edit the UnderThousand procedure to add that word when a remainder exists.
How to adapt the result for currency
The supplied function uses a neutral fraction format: and 56/100. That is useful for invoices and checks, but you may want wording such as “Dollars and Fifty-Six Cents.” The currency labels must be deliberately defined; Excel’s number formatting does not supply them.
For a dollar-style result, change this section:
If cents > 0 Then
result = result & " and " & Format$(cents, "00") & "/100"
End If
to:
result = result & " Dollars"
If cents > 0 Then
result = result & " and " & UnderThousand(cents) & " Cents"
End If
That change produces, for example, One Hundred Twenty-Five Dollars and Fifty Cents. If you need singular grammar, add a condition for wholePart = 1 and cents = 1. You should also decide how zero cents should appear: “One Hundred Dollars” or “One Hundred Dollars and Zero Cents.”
Rank #2
- View multiple calculations at the same time: Compare results and explore patterns on-screen with the MultiView display that supports up to four lines
- See math exactly as it appears in textbooks: Display math expressions, symbols and stacked fractions exactly the way they appear in textbooks — no need to adapt to a technical syntax; provides quick access to frequently used functions
- Scientific notation output: View scientific notation with the proper superscripted exponents and see the output in scientific notation
- Explore (x,y) table of values: Students can easily explore an (x,y) table of values for a given function automatically or by entering specific x values
- The TI-30XS MultiView scientific calculator is ideal for general math, Pre-Algebra, Algebra 1 and 2, Geometry, Statistics, general science, Biology and Chemistry
Save the workbook in a macro-enabled format
Because the function is VBA code, save the workbook in a macro-enabled format such as .xlsm. A macro-free format removes the VBA project when the file is saved. When another person opens the workbook, Excel may display a security warning; macros must be enabled for the custom function to calculate.
The worksheet formula does not need to be launched through the macro dialog. Once the code is in a standard module, Excel calls SpellNumber when the formula recalculates. The Developer > Macros command is for running a conventional macro procedure, not normally for entering a user-defined function into a cell.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Macro security and blocked results
If the formula returns an error or the function name is not recognized, check whether the workbook’s VBA content is blocked. Microsoft documents the macro-security location as:
Developer > Code > Macro Security
Microsoft labels Enable all macros as not recommended because it allows potentially dangerous code to run. If you temporarily use that setting to test a trusted workbook, return to a more restrictive setting afterward. Do not enable macros in an unknown file merely to make a number conversion work.
Running a normal VBA macro from the ribbon
If you add a separate Sub procedure—for example, one that converts a selected range and writes results beside it—run it through:
- Select Developer > Macros.
- Select the macro in the Macro name box.
- Select Run.
From the Visual Basic Editor, Microsoft also documents Run > Run Macro or pressing F5. This is separate from using =SpellNumber(A1) in a worksheet cell.
Recommended Free Tools
Rank #3
- Scientific Calculator with Graphic Function: All-in-one scientific and graphing calculator. Supports plotting functions, analyzing graphs, and solving complex equations. Displays graphs and formulas simultaneously for clear visualization. Ideal for algebra, calculus, and exam prep.
- Compact and Comfortable Design: This scientific and graphing calculator sized at 7 x 3.3 inches for a balanced and ergonomic feel. Fits easily in one hand or on a desk without taking up space. Ideal for long study sessions, test environments, and everyday academic or professional use; smooth button layout supports efficient input and navigation.
- Multiple Modes and 360+ Functions: Includes angle measurement, calculation, and display modes for flexible use across subjects. This scientific and graphing calculator supports over 360 functions such as fractions, complex numbers, statistics, linear regression, standard deviation, and variable solving. Ideal for mastering algebra, geometry, trigonometry, and advanced math applications.
- Durable and Portable Design: Built with an anti-drop body that resists everyday impacts for long-term use. This scientific and graphing calculator is lightweight and slim for easy carrying in a backpack or pocket that includes a protective case to guard the screen and buttons during travel or storage.
- If you cannot turn on the calculator, please press the reset button on the back! If you have any further problems, we offer a limited warranty of 365 days. Please contact us and we will give you an answer within 24 hours.
Why common alternatives fail
=TEXT(A1,"words")
This does not convert a number to English words. TEXT requires a valid formatting code, and its output is text intended for display. It can format 1234.567 as $1,234.57, but it cannot produce “One Thousand Two Hundred Thirty-Four.”
=VALUE(A1)
VALUE goes in the opposite direction. For example, =VALUE("$1,000") returns the numeric value 1000. It does not spell that value out. If the supplied text is not in a number, date, or time format Excel recognizes, it returns #VALUE!.
=VALUETOTEXT(A1)
VALUETOTEXT returns ordinary or strict text representation. Its optional format argument accepts only 0 or 1; it is not a number-to-words converter.
=BAHTTEXT(A1)
BAHTTEXT is a real built-in function, but it is specific to Thai wording and appends a Baht-related suffix. It is not an English currency conversion function.
Check the source value before troubleshooting the code
Numbers stored as text
A value that looks numeric may actually be text. If Excel displays a green error indicator, select the affected cells, select the warning icon, and choose Convert to Number. If the indicator is missing, enable background checking through File > Options > Formulas > Error Checking > Enable background error checking.
You can also test the cell with:
=ISNUMBER(A1)
If it returns FALSE, clean or convert the input before passing it to the VBA function. A text value containing currency symbols, spaces, or locale-specific separators may need to be normalized first.
Rank #4
- Natural Textbook Display presents formulas and results exactly as written in textbooks for intuitive learning.
Numbers with more than 15 digits
Excel has a maximum precision of 15 digits. Digits after the fifteenth can be rounded to zero before VBA receives the value. This matters for long identifiers, account numbers, and other strings that look like amounts but are not meant to be calculated.
For a 16-digit-or-longer identifier, format the destination cells as text before entering or pasting the data:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Home > Number group > arrow beside the Number Format box > Text
However, text is not automatically suitable for arithmetic or number-to-words conversion. Decide whether the value is an identifier—which should remain text—or a genuine number—which must be entered with a precision Excel can preserve.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Desktop Excel compatibility
VBA support is documented for desktop Microsoft 365 Excel, Excel 2024, Excel 2021, Excel 2019, and Excel 2016, including Mac desktop Excel. The exact security prompts and ribbon layout can vary by platform and organizational policy. If VBA is unavailable in your environment, use an approved add-in or an external conversion process rather than assuming that TEXT or VALUETOTEXT can perform the conversion.
FAQ
Does Excel have a built-in English number-to-words function?
No. Excel has no native English worksheet function equivalent to NUMBERTOWORDS. The standard desktop solution is a VBA user-defined function, an approved add-in, or another custom implementation.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Best Value
- Natural Textbook Display presents formulas and results exactly as written in textbooks for intuitive learning.
What formula converts a number in A1 to words?
After adding a VBA function named SpellNumber to a standard module, enter =SpellNumber(A1). SpellNumber is supplied by the workbook code; it is not built into Excel.
Can TEXT convert 123 into One Hundred Twenty-Three?
No. TEXT formats numeric output as text, such as $1,234.57. It does not spell numbers in English.
Can I convert currency amounts into words?
Yes, but the VBA routine must define the currency rules. The example in this tutorial uses a neutral 56/100 fraction and can be edited to output Dollars and Cents, Pounds and Pence, or another wording style.
Why does SpellNumber return an error?
Check that the code is in a standard VBA module, the workbook is macro-enabled, macros are permitted for this trusted file, and the source cell contains a genuine numeric value. Also check that the value has not exceeded Excel’s reliable 15-digit precision.
Do I need to run the macro every time I change the input?
No. A public VBA function used in a worksheet formula recalculates like a worksheet function. Use Developer > Macros > Run only for separate Sub procedures.
Can BAHTTEXT produce English words?
No. BAHTTEXT is designed for Thai text and Baht currency wording. It is not an English number-to-words function.
The Bottom Line
For English number-to-words conversion, do not use TEXT, VALUE, VALUETOTEXT, or a custom number format. Add a VBA function such as SpellNumber to a standard module, save the workbook as .xlsm, and call it with =SpellNumber(A1). Before relying on the result, verify the input is numeric, define your currency and decimal rules, and remember that Excel cannot preserve more than 15 significant digits reliably.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errors

