Skip to main content

Spell Number Function

 


In Microsoft Excel, you can't directly write a function like a traditional programming language. However, you can use VBA (Visual Basic for Applications) to create custom functions, like a "spell" function, which converts numbers into words.

Here's an example of how to write a VBA spell function that converts numbers to words in Excel:

Step-by-step guide to create the function:

  1. Open Excel.
  2. Press Alt + F11 to open the VBA editor.
  3. In the VBA editor, click Insert > Module.
  4. Paste the following code into the module:

 

Function SpellNumber(ByVal MyNumber)

    Dim Units As String

    Dim Cents As String

    Dim DecimalPlace As Integer

    Dim Count As Integer

    Dim Place(9) As String

    Dim Hundreds As String

    

    Place(2) = " Thousand "

    Place(3) = " Million "

    Place(4) = " Billion "

    Place(5) = " Trillion "


    ' Convert MyNumber to a string if it's not already.

    MyNumber = Trim(CStr(MyNumber))


    ' Find position of decimal point (if any).

    DecimalPlace = InStr(MyNumber, ".")


    ' Convert cents and set MyNumber to dollars amount.

    If DecimalPlace > 0 Then

        Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))

        MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))

    End If


    Count = 1

    Do While MyNumber <> ""

        Hundreds = GetHundreds(Right(MyNumber, 3))

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

        If Len(MyNumber) > 3 Then

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

        Else

            MyNumber = ""

        End If

        Count = Count + 1

    Loop


    SpellNumber = Application.Trim(Units)

    

    ' Append cents if applicable.

    If Cents <> "" Then SpellNumber = SpellNumber & " and " & Cents & " Cents"

End Function


Private Function GetHundreds(ByVal MyNumber)

    Dim Result As String

    If Val(MyNumber) = 0 Then Exit Function

    MyNumber = Right("000" & MyNumber, 3)

    If Mid(MyNumber, 1, 1) <> "0" Then

        Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "

    End If

    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


Private 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: Result = ""

        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: Result = ""

        End Select

        Result = Result & GetDigit(Right(TensText, 1))

    End If

    GetTens = Result

End Function


Private 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


  • After pasting the code, press Ctrl + S to save the workbook as a macro-enabled workbook (with a .xlsm extension).

  • Close the VBA editor by pressing Alt + Q.

  • You can now use the SpellNumber function in your Excel worksheet, just like any other Excel function. For example, in a cell, you can type:

  • =SpellNumber(1000.56) One Thousand and Fifty-Six Cents

  • @2
  • Comments

    1. Life has been filled with challenges ever since my husband left me and move on with another woman. Most times i had thought of ending it all. Things became worst when I lost my home, family and all to Hurricane Matthew and I became a refugee in my own country, Haiti. The only property I had left was an Internet-enabled phone in my pocket. One faithful day, i found one grandpa on the Internet, on Face-book. Someone from the US had testified of many great things that Grandpa omrodion had done for her and her family. I contacted him and the rest they say is history.Today i am happily married to a soldier I met in camp, and i am getting my happiness back again. I cannot keep this happiness to myself because i am not selfish. You too can contact dromorodion on E-mail: Dromorodion@gmail.com or call him on phone +2349072046883 whatsapp.

      ReplyDelete

    Post a Comment

    Popular posts from this blog

    Number convert to words

    Number convert to words  Virtual Learning Earning Channel Steps to Add the Macro Open Excel and press ALT + F11 to open the VBA Editor . Click Insert > Module . Copy and paste the code below into the module. Close the VBA Editor and return to Excel. Use the function in a cell like =NumberToWords(A1) . VBA Code for Digit-by-Digit Conversion Function NumberToWords(ByVal MyNumber As String) As String     Dim i As Integer     Dim Result As String     Dim Digit As String          ' Loop through each digit in the number     For i = 1 To Len(MyNumber)         Digit = Mid(MyNumber, i, 1)         Select Case Digit             Case "0": Result = Result & " Zero"             Case "1": Result = Result & " One"             Case "2": Result = Result & " Two"     ...

    Automatically update work sheets based on the Account field

            To automatically update sheets based on the Account field, you can use VBA in Excel. This script will check the Account field in your main sheet and transfer rows to the corresponding sheet for each account. Here's how to set it up: . Using VBA (Fully Automated Solution) If you want the data to be copied automatically whenever you enter it in the main sheet, you can use a VBA script. Steps to Implement VBA: Press Alt + F11 to open the VBA editor. Go to Insert > Module and paste the following code: VBA Script for Automatic Sheet Updates Sub UpdateAccountSheets()     Dim wsMain As Worksheet     Dim wsAccount As Worksheet     Dim lastRow As Long, i As Long     Dim accountName As String     Dim accountSheet As Worksheet     Dim accountLastRow As Long     Dim lastProcessedRow As Long          ' Set the main worksheet     Set wsMain = ThisWorkbook.Sheets("M...