There are several reasons you might want to convert numbers to words in Excel:

Excel doesn’t have a built-in function to convert numbers to words directly. Therefore, you'll need to use a custom VBA function. VBA is a programming language within Excel that enables you to extend its functionality.

If you aren't familiar with VBA, don’t worry. The process of adding and using a VBA script is straightforward, and this article will guide you through it step by step.

Before you start, you need to ensure that the Developer tab is enabled in Excel, as this is where you'll be working with VBA.

Once the Developer tab is enabled:

Copy and paste the following VBA code into the module window:

vba

Copy code

Function NumToWords(ByVal MyNumber)

    Dim Units As String

    Dim Tens As String

    Dim Pesos As String

    Dim Cents As String

    Dim DecimalPlace As Integer

    Dim Count As Integer

    

    ReDim Place(9) As String

    Place(2) = " Thousand "

    Place(3) = " Million "

    Place(4) = " Billion "

    

    ' Convert MyNumber to String in case it's a number.

    MyNumber = Trim(CStr(MyNumber))

    

    ' Find Position of decimal place.

    DecimalPlace = InStr(MyNumber, ".")

    

    ' Convert Peso amount.

    If DecimalPlace > 0 Then

        Pesos = Left(MyNumber, DecimalPlace - 1)

How to Convert Number to Words in Excel for Peso
How to Convert Number to Words in Excel for Peso

        Cents = Mid(MyNumber, DecimalPlace + 1) & "/100"

    Else

        Pesos = MyNumber

        Cents = "00/100"

    End If

    

    Count = 1

    Do While Pesos <> ""

        Temp = GetHundreds(Right(Pesos, 3))

        If Temp <> "" Then Units = Temp & Place(Count) & Units

        If Len(Pesos) > 3 Then

            Pesos = Left(Pesos, Len(Pesos) - 3)

        Else

            Pesos = ""

        End If

        Count = Count + 1

    Loop

    

    NumToWords = Units & "Pesos " & Cents

End Function

 

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

 

Function GetTens(TensText)

    Dim Result As String

    Result = ""

    If Val(Left(TensText, 1)) = 1 Then

        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

        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))

    End If

    GetTens = Result

End Function

 

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 VBA code converts any number into words in the Peso format. It handles numbers up to billions and includes centavos, which are represented as "00/100" when no cents are provided.

Before you can use the function, save your workbook as a macro-enabled file:

Now that you've added the VBA function, you can use it in your Excel sheet like a normal function. Here’s how:

For example, if cell A1 contains the value 1234.56, the result would be "One Thousand Two Hundred Thirty-Four Pesos 56/100."

With this guide, you now know how to convert number to words in excel peso using a custom VBA function. This process is particularly useful for preparing financial documents like invoices or checks. By following these steps, you’ll be able to automatically spell out any numerical amount in Peso, complete with centavos. While Excel doesn’t offer this feature natively, the flexibility of VBA allows you to extend its functionality to meet your needs.


Related post