Technical Anshu
Tutorials Blog
Excel Trick

Convert Numbers to Words in Excel Add the Function Once and Use It Forever

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.

By Technical AnshuMicrosoft ExcelWorks in Excel 2016 to Microsoft 365
Watch the full video - the add-in installed and =SPELLNUMBER working live, step by step

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.

Microsoft Excel - Amount in words
Formula bar=SPELLNUMBER(A2)
A2  1000B2  One Thousand Rupees Only
A3  1234.56B3  One Thousand Two Hundred Thirty Four Rupees and Fifty Six Paise Only
A4  250B4  Two Hundred Fifty Rupees Only

Example sheet - the words shown are the real output of the function code given on this page.

1

First the Honest Truth - Excel Has No Built-In Function for This

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.

2

Route 1 - Install the Ready-Made Add-In File Shown in the Video

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.

  1. Download the add-in file from the link in the video description and keep it in a fixed folder - do not run it from Downloads and later delete it, because Excel looks for it at the same place every time
  2. Open Excel, then File then Options
  3. Click Add-ins on the left
  4. At the bottom, Manage should say Excel Add-ins - click Go
  5. Click Browse, select the downloaded file, and press OK
  6. Put a tick next to the add-in name in the list and click OK
  7. In any cell type =SPELLNUMBER(A2) where A2 holds the amount - the words appear instantly

One 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.

3

Route 2 - Build the Same Function Yourself With VBA

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.

  1. Press Alt + F11 to open the VBA editor
  2. Click Insert then Module - a blank white code window opens
  3. Copy the complete code below and paste it into that window, exactly as it is
  4. Close the VBA editor and type =SpellNumber(A2) in a cell
Option 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.

4

Save It the Right Way or the Function Vanishes

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.

Downloaded the add-in and Excel shows a red macros blocked bar? That is the Mark of the Web doing its job. There is a safe one-file fix for it in this series - do not switch off macro security for the whole computer.

Watch the Full Video

See the file downloaded, the add-in switched on and the formula typed live - the complete method in about a minute.

Watch Full Video
Common Questions

Is there any built-in Excel formula that converts numbers to words?

No. 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.

Will SPELLNUMBER work if I send the file to another computer?

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.

Does this work in Excel Online or Google Sheets?

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.

This guide is based on the Technical Anshu video on converting numbers to words in Excel - if a step gets stuck, ask in the video comments and you will get an answer.