How to convert numbers into words (text) in an Excel sheet using a simple and effective Excel VBA method

Many users are surprised to learn that Excel does not have a built-in function how to convert numbers into text words in Excel sheet using VBA Method

Microsoft Excel is one of the most powerful tools for data handling, calculations, and reporting. However, many users are surprised to learn that Excel does not have a built-in function to convert numbers into words (for example, converting 1250 into One Thousand Two Hundred Fifty).

This feature is frequently required while preparing invoices, salary slips, financial statements, cheques, bills, and official documents. In this blog, you will learn simple and effective methods to convert numbers to words or text in Excel, including a professional VBA-based Excel hack.


Why Convert Numbers to Words in Excel?

Converting numbers into words is useful in many real-life and professional scenarios, such as:

  • Preparing financial reports
  • Creating invoices and billing systems
  • Generating salary sheets
  • Writing amounts on cheques
  • Academic and administrative documentation
  • Automating repetitive Excel tasks

Method 1: Convert Numbers to Words in Excel Using VBA (Best Method)

This is the most accurate and professional method to convert numbers into words in Excel.

Step 1: Open VBA Editor

  • Open your Excel file
  • Press Alt + F11
  • Click on Insert → Module

Step 2: Paste the VBA Code

Option Explicit

Function SpellNumber(ByVal numIn)
    Dim LSide, RSide, Temp, DecPlace, Count, oNum
    oNum = numIn
    ReDim Place(9) As String
    Place(2) = " Thousand "
    Place(3) = " Million "
    Place(4) = " Billion "
    Place(5) = " Trillion "
    numIn = Trim(Str(numIn)) 'String representation of amount
    ' Edit 2.(0)/Internationalisation
    ' Don't change point sign here as the above assignment preserves the point!
    DecPlace = InStr(numIn, ".") 'Pos of dec place 0 if none 
    If DecPlace > 0 Then 'Convert Right & set numIn
        RSide = GetTens(Left(Mid(numIn, DecPlace + 1) & "00", 2))
        numIn = Trim(Left(numIn, DecPlace - 1))
    End If
    RSide = numIn
    Count = 1
    Do While numIn <> ""
        Temp = GetHundreds(Right(numIn, 3))
        If Temp <> "" Then LSide = Temp & Place(Count) & LSide
        If Len(numIn) > 3 Then
            numIn = Left(numIn, Len(numIn) - 3)
        Else
            numIn = ""
        End If
        Count = Count + 1
    Loop

    SpellNumber = LSide
    If InStr(oNum, Application.DecimalSeparator) > 0 Then    ' << Edit 2.(1) 
        SpellNumber = SpellNumber & " point " & fractionWords(oNum)
    End If

End Function

Function GetHundreds(ByVal numIn) 'Converts a number from 100-999 into text
    Dim w As String
    If Val(numIn) = 0 Then Exit Function
    numIn = Right("000" & numIn, 3)
    If Mid(numIn, 1, 1) <> "0" Then 'Convert hundreds place
        w = GetDigit(Mid(numIn, 1, 1)) & " Hundred "
    End If
    If Mid(numIn, 2, 1) <> "0" Then 'Convert tens and ones place
        w = w & GetTens(Mid(numIn, 2))
    Else
        w = w & GetDigit(Mid(numIn, 3))
    End If
    GetHundreds = w
End Function

Function GetTens(TensText)  'Converts a number from 10 to 99 into text
    Dim w As String
    w = ""           'Null out the temporary function value
    If Val(Left(TensText, 1)) = 1 Then   'If value between 10-19
        Select Case Val(TensText)
            Case 10: w = "Ten"
            Case 11: w = "Eleven"
            Case 12: w = "Twelve"
            Case 13: w = "Thirteen"
            Case 14: w = "Fourteen"
            Case 15: w = "Fifteen"
            Case 16: w = "Sixteen"
            Case 17: w = "Seventeen"
            Case 18: w = "Eighteen"
            Case 19: w = "Nineteen"
            Case Else
        End Select
    Else      'If value between 20-99..
        Select Case Val(Left(TensText, 1))
            Case 2: w = "Twenty "
            Case 3: w = "Thirty "
            Case 4: w = "Forty "
            Case 5: w = "Fifty "
            Case 6: w = "Sixty "
            Case 7: w = "Seventy "
            Case 8: w = "Eighty "
            Case 9: w = "Ninety "
            Case Else
        End Select
        w = w & GetDigit _
            (Right(TensText, 1))  'Retrieve ones place
    End If
    GetTens = w
End Function

Function GetDigit(Digit) 'Converts a number from 1 to 9 into text
    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

Function fractionWords(n) As String
    Dim fraction As String, x As Long
    fraction = Split(n, Application.DecimalSeparator)(1)   ' << Edit 2.(2)
    For x = 1 To Len(fraction)
        If fractionWords <> "" Then fractionWords = fractionWords & " "
        fractionWords = fractionWords & GetDigit(Mid(fraction, x, 1))
    Next x
End Function

Step 3: Use the Function in Excel

In any Excel cell, type:

=SpellNumber(A1)

Example:

NumberResult
1250One Thousand Two Hundred Fifty
50489Fifty Thousand Four Hundred Eighty Nine

This method works perfectly for large numbers and is widely used in professional Excel automation.

Complete Tutorial


Method 2: Convert Numbers to Text (Not Words) Using TEXT Function

If you only want to convert numbers into text format (digits) and not into spelling, use this method.

Formula:

=TEXT(A1,"0")

Example:

  • 12345 → "12345" (as text)

This method is useful for:

  • Preventing automatic calculations
  • Formatting data
  • Maintaining leading zeros

Method 3: Excel Add-Ins (Optional)

Some third-party Excel add-ins can convert numbers into words automatically.

Limitations:

  • Mostly paid tools
  • Limited customization
  • Not ideal for long-term professional use

Which Method Should You Use?

RequirementBest Method
Convert number to wordsVBA Method
Convert number to textTEXT Function
Quick temporary solutionAdd-ins

Excel Hack Tip

If you regularly work with financial or accounting data, learning VBA-based Excel automation can save hours of manual work and significantly improve productivity.


Conclusion

Although Microsoft Excel does not provide a built-in number-to-word function, you can easily achieve this using VBA code. This Excel hack is extremely useful for professionals, students, educators, and business owners. By mastering this technique, you can enhance your Excel skills and automate important documentation tasks.

For more Excel hacks, tech tutorials, and productivity tips, stay connected with Learn Mitra.


convert numbers to words in excel, number to word excel vba, excel number to text, excel hacks, excel tricks, excel automation, excel vba tutorial, excel tips and tricks, number to words in excel sheet, excel for beginners, excel advanced tutorial, excel invoice automation, learn mitra excel, ms excel tips



Discover more from Easy Notes 4U Academy

Subscribe to get the latest posts sent to your email.

Written by 

Dr. Gaurav has a doctorate in management, a NET & JRF in commerce and management, an MBA, and a M.COM. Gaining a satisfaction career of more than 10 years in research and Teaching as an Associate professor. He published more than 20 textbooks and 15 research papers.

Leave a Reply