formul;a to convert figures into words in excel

Anonymous
2025-02-12T10:27:09+00:00

formul;a to convert figures into words in excel

Microsoft 365 and Office | Excel | For education | iOS

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments
{count} votes

16 answers

Sort by: Most helpful
  1. Anonymous
    2025-02-21T06:08:01+00:00

    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
    
    0 comments No comments
  2. Anonymous
    2025-02-21T07:10:45+00:00

    Many thanks for your prompt response. However, I want a slight change in conversion formula. I want it for converting amount in figures to words for Indian value numbers; viz. for a value of 10,15,17,540/- to be "Ten Crore fifteen lacs seventeen thousand five hundred forty".

    Please help.

    0 comments No comments
  3. Anonymous
    2025-02-21T11:25:47+00:00

    Would be grateful if you could please help me with a solution to the following:

    I want a slight change in conversion formula. I want it for converting amount in figures to words for Indian value numbers; viz. for a value of

    10,15,17,540/-

    to be written as

    "Ten Crore fifteen lacs seventeen thousand five hundred forty".

    Thanks and regards

    0 comments No comments
  4. Anonymous
    2025-02-21T11:26:49+00:00

    Would be grateful if you could please help me with a solution to the following:

    I want a slight change in conversion formula. I want it for converting amount in figures to words for Indian value numbers; viz. for a value of 

    10,15,17,540/-

    to be written as 

    "Ten Crore fifteen lacs seventeen thousand five hundred forty".

    Thanks and regards

    0 comments No comments
  5. Anonymous
    2025-02-22T11:37:23+00:00

    Waiting for your support please 🙏

    0 comments No comments