You type 1000 in a cell and Excel will happily show it as 1,000 or as a currency amount - but it will never write the words One Thousand for you. There is no built-in function for that job. The good news: one small function, added once, does it for every amount, in every file, forever.
Whether it is an invoice total, a cheque amount or a salary sheet, the amount in words is the part nobody wants to type by hand - one typing slip and the words stop matching the figures. Below are both honest routes to the same result: the ready-made add-in from the video, and the do-it-yourself VBA code, copy-paste ready.
Example sheet - the words shown are the real output of the function code given on this page.
Search Excel's function list as long as you like - there is no built-in function that turns 1000 into One Thousand. The only spelling function Microsoft ships is BAHTTEXT, and it writes Thai text for the Thai baht, which is no use on an Indian invoice.
So every =SPELLNUMBER you have ever seen working is one of two things: a small custom VBA function someone pasted into the file, or an add-in file that carries that function. Both routes are on this page. Add it once, and it works forever.
The video uses the quick route: a ready-made Excel add-in file, linked in the video description, that you switch on inside Excel one time.
=SPELLNUMBER(A2) where A2 holds the amount - the words appear instantlyOne honest warning: an add-in is program code. Download it only from the creator's own link, never from a random site that re-uploads it - a changed copy can carry anything.
Prefer to know exactly what is running on your PC? Paste the standard function yourself. It takes two minutes and then the code is yours.
=SpellNumber(A2) in a cellOption Explicit
'Main Function
Function SpellNumber(ByVal MyNumber)
Dim Rupees, Paise, Temp
Dim DecimalPlace, Count
ReDim Place(9) As String
Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "
' String representation of amount.
MyNumber = Trim(Str(MyNumber))
' Position of decimal place 0 if none.
DecimalPlace = InStr(MyNumber, ".")
' Convert Paise and set MyNumber to Rupee amount.
If DecimalPlace > 0 Then
Paise = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If
Count = 1
Do While MyNumber <> ""
Temp = GetHundreds(Right(MyNumber, 3))
If Temp <> "" Then Rupees = Temp & Place(Count) & Rupees
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop
Select Case Rupees
Case ""
Rupees = "No Rupees"
Case "One"
Rupees = "One Rupee"
Case Else
Rupees = Rupees & " Rupees"
End Select
Select Case Paise
Case ""
Paise = " Only"
Case "One"
Paise = " and One Paisa Only"
Case Else
Paise = " and " & Paise & " Paise Only"
End Select
' Application.Trim removes the extra spaces the groups leave behind.
SpellNumber = Application.Trim(Rupees & Paise)
End Function
' Converts a number from 100-999 into text
Function GetHundreds(ByVal MyNumber)
Dim Result As String
If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3)
' Convert the hundreds place.
If Mid(MyNumber, 1, 1) <> "0" Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
End If
' Convert the tens and ones place.
If Mid(MyNumber, 2, 1) <> "0" Then
Result = Result & GetTens(Mid(MyNumber, 2))
Else
Result = Result & GetDigit(Mid(MyNumber, 3))
End If
GetHundreds = Result
End Function
' Converts a number from 10 to 99 into text.
Function GetTens(TensText)
Dim Result As String
Result = "" ' Null out the temporary function value.
If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
Select Case Val(TensText)
Case 10: Result = "Ten"
Case 11: Result = "Eleven"
Case 12: Result = "Twelve"
Case 13: Result = "Thirteen"
Case 14: Result = "Fourteen"
Case 15: Result = "Fifteen"
Case 16: Result = "Sixteen"
Case 17: Result = "Seventeen"
Case 18: Result = "Eighteen"
Case 19: Result = "Nineteen"
Case Else
End Select
Else ' If value between 20-99...
Select Case Val(Left(TensText, 1))
Case 2: Result = "Twenty "
Case 3: Result = "Thirty "
Case 4: Result = "Forty "
Case 5: Result = "Fifty "
Case 6: Result = "Sixty "
Case 7: Result = "Seventy "
Case 8: Result = "Eighty "
Case 9: Result = "Ninety "
Case Else
End Select
Result = Result & GetDigit(Right(TensText, 1)) ' Retrieve ones place.
End If
GetTens = Result
End Function
' Converts a number from 1 to 9 into text.
Function GetDigit(Digit)
Select Case Val(Digit)
Case 1: GetDigit = "One"
Case 2: GetDigit = "Two"
Case 3: GetDigit = "Three"
Case 4: GetDigit = "Four"
Case 5: GetDigit = "Five"
Case 6: GetDigit = "Six"
Case 7: GetDigit = "Seven"
Case 8: GetDigit = "Eight"
Case 9: GetDigit = "Nine"
Case Else: GetDigit = ""
End Select
End Function
This code is the classic number-to-words function, set to Rupees and Paise. It speaks the Western numbering system - Thousand, Million, Billion. If your invoices speak Lakh and Crore instead, use the Indian version in the companion page in this series; the two systems group digits differently, so it is a different function, not a renamed one.
If you used Route 2, the code lives inside your workbook, and a normal .xlsx file cannot hold code - Excel will warn you and strip it out on saving. Save the file as Excel Macro-Enabled Workbook (.xlsm) and the function stays.
If you used Route 1, the add-in route, the function lives in the add-in file itself, so it is available in every workbook you open on that PC - that is exactly why the video uses it. Either way, an add-in or macro file downloaded from the internet may open with a red macros blocked bar; that is a separate, easy fix covered in this series - never lower the whole macro security setting just for one file.
See the file downloaded, the add-in switched on and the formula typed live - the complete method in about a minute.
Watch Full VideoNo. Microsoft has never shipped an English number-to-words function in Excel. The only spelling function built in is BAHTTEXT, which writes Thai words for the Thai baht. Every working =SPELLNUMBER is a custom VBA function or an add-in that carries one.
Only if that computer also has the add-in installed, or the workbook itself carries the code and is saved as a macro-enabled .xlsm file with macros allowed. On a PC without either, the cell simply shows a NAME error.
No. VBA functions and add-in files do not run in Excel for the web or in Google Sheets. You need the desktop Excel app on Windows or Mac. If macros are banned on your office PC, the helper-column page in this series is the no-macro alternative.