Convert Number to Word Currency in MS Excel - (Alt+F11)

 Function TalipaoTreasurer(ByVal MyNumber As String) As String
    Dim Pesos As String, Centavos As String
    Dim DecimalPlace As Integer
    Dim TempStr As String
    
    DecimalPlace = InStr(MyNumber, ".")
    If DecimalPlace > 0 Then
        Pesos = Left(MyNumber, DecimalPlace - 1)
        Centavos = Mid(MyNumber, DecimalPlace + 1)
        Centavos = Left(Centavos & "00", 2)
    Else
        Pesos = MyNumber
        Centavos = ""
    End If
    
    If Val(Pesos) > 0 Then
        TempStr = ConvertToWords(Pesos) & " Peso"
        If Val(Pesos) > 1 Then TempStr = TempStr & "s"
    End If
    
    If Val(Centavos) > 0 Then
        If TempStr <> "" Then TempStr = TempStr & " and "
        TempStr = TempStr & ConvertToWords(Centavos) & " Centavo"
        If Val(Centavos) > 1 Then TempStr = TempStr & "s"
    End If
    
    If TempStr = "" Then TempStr = "Zero Pesos"
    TalipaoTreasurer = TempStr & " Only"
End Function

Private Function ConvertToWords(ByVal MyNumber As String) As String
    Dim Units() As String
    Units = Split("One Two Three Four Five Six Seven Eight Nine", " ")
    
    Dim Teens() As String
    Teens = Split("Eleven Twelve Thirteen Fourteen Fifteen Sixteen Seventeen Eighteen Nineteen", " ")
    
    Dim Tens() As String
    Tens = Split("Ten Twenty Thirty Forty Fifty Sixty Seventy Eighty Ninety", " ")
    
    Dim Place() As String
    Place = Split("", " ") ' Unused, but available for enhancements
    
    Dim Hundreds As String, TensPart As String, Ones As String
    Dim Num As String, x As Integer
    Dim Result As String
    
    MyNumber = Right("000000000" & MyNumber, 9)
    
    Dim i As Integer
    Dim Segment As String
    For i = 1 To 3
        Segment = Mid(MyNumber, (i - 1) * 3 + 1, 3)
        If Val(Segment) > 0 Then
            Result = ConvertHundreds(Segment) & IIf(i = 1, " Million ", IIf(i = 2, " Thousand ", "")) & Result
        End If
    Next i
    
    ConvertToWords = Application.WorksheetFunction.Trim(Result)
End Function

Private Function ConvertHundreds(ByVal MyNumber As String) As String
    Dim Units() As String
    Units = Split("One Two Three Four Five Six Seven Eight Nine", " ")
    
    Dim Teens() As String
    Teens = Split("Eleven Twelve Thirteen Fourteen Fifteen Sixteen Seventeen Eighteen Nineteen", " ")
    
    Dim Tens() As String
    Tens = Split("Ten Twenty Thirty Forty Fifty Sixty Seventy Eighty Ninety", " ")
    
    MyNumber = Right("000" & MyNumber, 3)
    Dim h As Integer, t As Integer, o As Integer
    h = Val(Left(MyNumber, 1))
    t = Val(Mid(MyNumber, 2, 1))
    o = Val(Right(MyNumber, 1))
    
    Dim Words As String
    If h > 0 Then Words = Units(h - 1) & " Hundred "
    
    If t > 1 Then
        Words = Words & Tens(t - 1)
        If o > 0 Then Words = Words & "-" & Units(o - 1)
    ElseIf t = 1 Then
        If o = 0 Then
            Words = Words & "Ten"
        Else
            Words = Words & Teens(o - 1)
        End If
    ElseIf o > 0 Then
        Words = Words & Units(o - 1)
    End If
    
    ConvertHundreds = Words
End Function

 

 

 

 

 

 

then =TalipaoTreasurer(A1) 

Please Select Embedded Mode To Show The Comment System.*

Previous Post Next Post