Two best ways to convert numbers to words in Excel

In this article I will show you two quick and free ways to convert currency numbers into English words in Excel 2019, 2016, 2013 and other versions.

Microsoft Excel is a great program to calculate this and that. It was initially developed to process large data arrays. However, it also lets creating accounting records like invoices, evaluation or balance sheets quickly and effectively.

In more or less solid payment documents it is necessary to duplicate numeric values with their word form. It is much harder to falsify typed numbers than those written by hand. Some swindler can try to make 8000 out of 3000, while it is almost impossible to secretly replace "three" with "eight".

So what you need is not just convert numbers to words in Excel (е.g. 123.45 to "one hundred and twenty three, forty five"), but spell out dollars and cents (е.g. $29.95 as "twenty nine dollars and ninety nine cents" ), pounds and pence for GBP, euros and eurocents for EUR, etc.
Convert number to words in Excel 2010

Even the latest versions of Excel don't have a built-in tool for spelling numbers, not to mention earlier versions. But that is when Excel is really good. You can always improve its functionality using formulas in all their
combinations, VBA macros, or third-party add-ins.

Below you'll find two ways to convert numbers from figures to words

And, possibly, you may need to convert Words to Numbers in Excel

Note. If you are looking for the number to text conversion, which means you want Excel to see your number as text, it's a bit different thing. For this, you can use the TEXT function or a few other ways described in How to change numbers to text in Excel.

SpellNumber VBA macro to convert numbers to words

As I have already mentioned, Microsoft didn't want to add a tool for this task. However, when they saw how many users needed it, they created and published the special VBA macro on their website. The macro does what its name SpellNumber suggests. All other macros I came across are based on the Microsoft code.

You can find the macro mentioned as "spellnumber formula". However, it is not a formula, but a macro function, or to be more precise Excel User defined function (UDF).

The spellnumber option is able to write dollars and cents. If you need a different currency, you can change "dollar" and "cent" with the name of your one.

If you are not a VBA savvy guy, below you will find a copy of the code. If you still don't want or haven't time to sort this out, please use this solution.

  1. Open the workbook where you need to spell the numbers.
  2. Press Alt+F11 to open the Visual Basic editor window.
  3. If you have several books opened, check that the needed workbook is active using the list of projects in the upper left corner of the editor (one of the workbook elements is highlighted with blue).
  4. In the editor menu go to Insert-> Module.
    Excel Visual Basic editor - insert module
  5. You should see a window named YourBook - Module1. Select all of the code in the frame below and paste it to this window.
    SpellNumber VBA macro to convert numbers to words

    Option Explicit
    'Main Function
    Function SpellNumber(ByVal MyNumber)
    		Dim Dollars, Cents, Temp
    		Dim DecimalPlace, Count
    		ReDim Place(9) As String
    		Place(2) = " Thousand "
    		Place(3) = " Million "
    		Place(4) = " Billion "
    		Place(5) = " Trillion "
    
    		MyNumber = Trim(Str(MyNumber))
    		DecimalPlace = InStr(MyNumber, ".")
    		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 <> ""
    				Temp = GetHundreds(Right(MyNumber, 3))
    				If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
    				If Len(MyNumber) > 3 Then
    						MyNumber = Left(MyNumber, Len(MyNumber) - 3)
    				Else
    						MyNumber = ""
    				End If
    				Count = Count + 1
    		Loop
    		Select Case Dollars
    				Case ""
    						Dollars = "No Dollars"
    				Case "One"
    						Dollars = "One Dollar"
    				 Case Else
    						Dollars = Dollars & " Dollars"
    		End Select
    		Select Case Cents
    				Case ""
    						Cents = " and No Cents"
    				Case "One"
    						Cents = " and One Cent"
    							Case Else
    						Cents = " and " & Cents & " Cents"
    		End Select
    		SpellNumber = Dollars & 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 = "" ' Null out the temporary function value.
    		If Val(Left(TensText, 1)) = 1 Then   ' If value between 10-19…
    				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 ' If value between 20-99…
    				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))  ' Retrieve ones place.
    		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
    
  6. Press Ctrl+S to save the updated workbook.

    You will need to resave your workbook. When you try to save the workbook with a macro you'll get the message "The following features cannot be saved in macro-free workbook"

    The following features cannot be saved in macro-free Workbook : VB project

    Click No. When you see a new dialog, chose the Save as option. In the field "Save as type" pick the option "Excel macro-enabled workbook".

    Save your book as 'Excel macro-enabled workbook'

Use SpellNumber macro in your worksheets

Now you can use the function SpellNumber in your Excel documents. Enter =SpellNumber(A2) into the cell where you need to get the number written in words. Here A2 is the address of the cell with the number or amount.

Use SpellNumber macro in your Excel worksheets

Here you can see the result:
Spelled out numbers to dollars and cents

Voila!

Quickly copy the SpellNumber function to other cells.

If you need to convert the entire table, not just 1 cell, place your mouse cursor to the lower right corner of the cell with the formula until it turns into a small black cross:
Quickly copy the SpellNumber function to other cells

Left-click and drag it across the column to fill in the formula. Release the button to see the results:
Spelled out numbers to dollars and cents

Note. Please keep in mind that if you use SpellNumber with a link to another cell, the written sum will be updated each time the number in the source cell is changed.
You can also enter the number directly into the function, for example, =SpellNumber(29.95) (29.95 - without quotation marks and the Dollar sign).

Disadvantages of using macro to spell numbers in Excel

First off, you must know VBA to modify the code according to your needs. It is necessary to paste the code for each workbook, where you plan to change it. Otherwise, you will need to create a template file with macros and configure Excel to load this file at each start.

The main disadvantage of using a macro is if you send the workbook to somebody else, this person will not see the text unless the macro is built into the workbook. And even if it's built-in, they will get an alert that there are macros in the workbook.
Add a macro to your workbook

Spell numbers into words using a special add-in

For Excel users who need to quickly spell sums but don't have time to learn VBA or figure out workarounds, we created a special tool that can quickly perform the amount-to-words conversion for a few popular currencies. Please meet the Spell Number add-in included with the latest release of our Ultimate Suite for Excel.

The Spell Number tool for Excel

Besides being ready for use, the tool is really flexible in converting amounts to text:

  • You can select one of the following currencies: USD, EUR, GBP, BIT, AUD.
  • Spell the fractional part in cents, pennies, оr bitcents.
  • Choose any text case for the result: lower case, UPPER CASE, Title Case, or Sentence case.
  • Spell the decimal part in different ways.
  • Include or omit zero cents.

The add-in supports all modern versions including Excel 365, Excel 2029, Excel 2016, Excel 2013, and Excel 2010. Please feel free to explore other capabilities on the product's home page linked above.

And now, let's see this number spelling utility in action:

  1. Select an empty cell for the result.
  2. On the Ablebits tab, in the Utilities group, click Spell Number.
  3. In the Spill Number dialog window that appears, configure the following things:
    • For the Select your number box, pick the cell containing the amount you want to get written as text.
    • Specify the desired currently, letter case and the way the decimal part of the number should be spelled.
    • Define whether to include zero cents or not.
    • Choose whether to insert the result as a value or formula.
  4. At the bottom of the dialog window, preview the result. If you are happy with the way your number is written, click Spell. Otherwise, try different settings.

The screenshot below demonstrates the default choices and the spelled number in B2. Please notice a formula (more precisely, a user-defined function) in the formula bar:

The amount number is converted to words.

And this is a quick demonstration of how other currencies can be spelled out:

How different currencies can be spelled out

Tips and notes:

  • Because the Spell Number add-in was designed to handle real-life use cases such as invoices and other financial documents, it can only convert one number at a time.
  • To spell a column of numbers, insert a formula in the first cell, and then copy the formula down.
  • If there is chance that your source data may change in the future, it's best to insert the result as formula, so it updates automatically as the original number changes.
  • When choosing the result as formula option, a custom user-defined function (UDF) is inserted. If you plan to share your workbook with someone who does not have the Ultimate Suite installed, remember to replace formulas with values before sharing.

Reverse conversion - English words into numbers

Frankly, I can't imagine why you may need it. Just in case… :)

It appears that Excel MVP, Jerry Latham, created such Excel User defined function (UDF) as WordsToDigits. It converts English words back to number.

You can download Jerry's WordsToDigits workbook to see the UDF code. Here you'll also find his examples of how to use the function.

Convert english words into numbers

You can see how the function works on the sheet "Sample Entries", where you will also be able to enter your own examples. If you plan to employ WordsToDigits in your documents, please be informed that this function has restrictions. For example, it doesn't recognize fractions entered in words. You will find all the details on the "Information" sheet.

You may also be interested in

472 responses to "Two best ways to convert numbers to words in Excel"

  1. Yohannes.melesse@syngenta .com says:

    please provide sample video

  2. jeevan singh says:

    Option Explicit
    'Main Function
    Function SpellNumber(ByVal MyNumber)
    Dim Dollars, Cents, Temp
    Dim DecimalPlace, Count
    ReDim Place(9) As String
    Place(2) = " Thousand "
    Place(3) = " Million "
    Place(4) = " Billion "
    Place(5) = " Trillion "

    MyNumber = Trim(Str(MyNumber))
    DecimalPlace = InStr(MyNumber, ".")
    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 ""
    Temp = GetHundreds(Right(MyNumber, 3))
    If Temp "" Then Dollars = Temp & Place(Count) & Dollars
    If Len(MyNumber) > 3 Then
    MyNumber = Left(MyNumber, Len(MyNumber) - 3)
    Else
    MyNumber = ""
    End If
    Count = Count + 1
    Loop
    Select Case Dollars
    Case ""
    Dollars = "No Dollars"
    Case "One"
    Dollars = "One Dollar"
    Case Else
    Dollars = Dollars & " Dollars"
    End Select
    Select Case Cents
    Case ""
    Cents = " and No Cents"
    Case "One"
    Cents = " and One Cent"
    Case Else
    Cents = " and " & Cents & " Cents"
    End Select
    SpellNumber = Dollars & 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 = "" ' Null out the temporary function value.
    If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
    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 ' If value between 20-99...
    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)) ' Retrieve ones place.
    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

    • Loy says:

      when i copy and paste this, it gives me errors, what am i doing wrong?

      • Abhishek kumar says:

        Option Explicit
        'Main Function
        Function SpellNumber(ByVal MyNumber)
        Dim Rupees, Paisa, Temp
        Dim DecimalPlace, Count
        ReDim Place(9) As String
        Place(2) = " Thousand "
        Place(3) = " Million "
        Place(4) = " Billion "
        Place(5) = " Trillion "

        MyNumber = Trim(Str(MyNumber))
        DecimalPlace = InStr(MyNumber, ".")
        If DecimalPlace > 0 Then
        Paisa = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _
        "00", 2))
        MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
        End If
        Count = 1
        Do While MyNumber ""
        Temp = GetHundreds(Right(MyNumber, 3))
        If Temp "" Then Rupees = Temp & Place(Count) & Rupees
        If Len(MyNumber) > 3 Then
        MyNumber = Left(MyNumber, Len(MyNumber) - 3)
        Else
        MyNumber = ""
        End If
        Count = Count + 1
        Loop
        Select Case Rupees
        Case ""
        Rupees = "No Rupees"
        Case "One"
        Rupees = "One Rupees"
        Case Else
        Rupees = Rupees & " Rupees"
        End Select
        Select Case Paisa
        Case ""
        Paisa = " and No Paisa"
        Case "One"
        Paisa = " and One Paisa"
        Case Else
        Paisa = " and " & Paisa & " Paisa"
        End Select
        SpellNumber = Rupees & Paisa
        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 = "" ' Null out the temporary function value.
        If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
        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 ' If value between 20-99...
        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)) ' Retrieve ones place.
        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

        • Abhishek kumar says:

          than save ur file

        • Dr. RAtnapal says:

          i use this code but not given result. massage come Privacy warning; This documents contains macros, Activex controls,XML expansion pack information, or web components. These may include personal information that can not be removed by the documents inspector.

  3. Marjorie Montemayor says:

    how can i convert numbers to words for Peso

    • Oli says:

      replace lng mam yung dollars nang pesos (control+h) tapos replace all lng..

      dollars to pesos
      dollar to peso

      • Joseph Robert A Costacorta says:

        How about po yong 66.15 for example.
        Sinasabi nya Sixty six pesos and Fourteen Cents lng. Paano po babaguhin para maging fifteen sya.

  4. Jorge Baez says:

    I keep getting a syntax error
    Do While MyNumber ""
    Temp = GetHundreds(Right(MyNumber, 3))
    If Temp "" Then Dollars = Temp & Place(Count) & Dollars

  5. Supriya says:

    Dear, this is to update you that the formula is not working perfectly. See the response that I am getting:->
    For Kuwaiti Dinars
    for KD 122.050 I got: One Hundred Twenty Two Kuwait Dinar and Five fils

    the correct answer has to be: One Hundred Twenty Two Kuwait Dinar and Fifty fils
    What to change now

    • thon says:

      look at the figure, it says .05 and not .50, the result is correct it seems the figure is point zero five, therefore the result should be five instead of fifty

    • Eimantas says:

      the issue is to replace the separator from "." to "," in the number or in the formula from:
      MyNumber = Trim(Str(MyNumber))
      DecimalPlace = InStr(MyNumber, ".")
      to:
      MyNumber = Trim(Str(MyNumber))
      DecimalPlace = InStr(MyNumber, ",")

  6. Supriya says:

    I am getting a value like this :Four Hundred Eighty Dollars and Seventy One Cents. Instead of Dollars I want to have it in Kuwaiti Dinars and fills.
    Pls help me

  7. Tanzeel Hussain says:

    I Was looking for him a lot, This formula hit is very good working on any Currency,
    i am very happy thank you very much sir, Great job, May Allah bless you.😊😘💕😘💕😘💕😘💕

    • Raja Zeeshan Khaliq says:

      Assalam -o- Alaikum
      My dear brother i want to convert a mathematical digits in english words without any currency like as
      564 Five Hundred and Sixty Four
      what i do now please help me as soon as possible
      i have to prepare Result Cards

      • Ikram Ullah says:

        Wa Alaikum Assalam,
        Dear Raja Zeeshan
        Please in macro editor window press Ctrl+F , find Dollar and replace it with empty space . do it again for Dollars and similarly for Cent and cents respectively. I hope it will solve your problem.

  8. Adil Farooqui says:

    This formula is very good working on any Currency..

  9. Liza says:

    Thank you Sir for sharing this formula. It's help me a lot! I really appreciate that. Thanks again.

  10. kherlen alih says:

    help me naman po pano mag convert numbers to words sa excell for cheque please ..

  11. Ola says:

    Thank you for this.
    However, this was noticed.
    For example, i tried to spell 450,750.34
    Four Hundred Fifty Thousand Seven Hundred Fifty Dollars and Thirty Four Cents
    In my country, we spell like this
    Four Hundred and Fifty Thousand, Seven Hundred and Fifty Dollars, Thirty Four Cents
    Can you please help me tweak the VBA code to have this new result.

    • wasiullah says:

      did u got that code? i need it too

    • Bindesh says:

      Option Explicit
      'Main Function
      Function SpellNumber(ByVal MyNumber)
      Dim Rupees, Paisa, Temp
      Dim DecimalPlace, Count
      ReDim Place(9) As String
      Place(2) = " Thousand "
      Place(3) = " Million "
      Place(4) = " Billion "
      Place(5) = " Trillion "

      MyNumber = Trim(Str(MyNumber))
      DecimalPlace = InStr(MyNumber, ".")
      If DecimalPlace > 0 Then
      Paisa = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _
      "00", 2))
      MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
      End If
      Count = 1
      Do While MyNumber ""
      Temp = GetHundreds(Right(MyNumber, 3))
      If Temp "" Then Rupees = Temp & Place(Count) & Rupees
      If Len(MyNumber) > 3 Then
      MyNumber = Left(MyNumber, Len(MyNumber) - 3)
      Else
      MyNumber = ""
      End If
      Count = Count + 1
      Loop
      Select Case Rupees
      Case ""
      Rupees = "No Rupees"
      Case "One"
      Rupees = "One Dollar"
      Case Else
      Rupees = Rupees & " Rupees"
      End Select
      Select Case Paisa
      Case ""
      Paisa = " and No Paisa"
      Case "One"
      Paisa = " and One Cent"
      Case Else
      Paisa = " and " & Paisa & " Paisa"
      End Select
      SpellNumber = Rupees & Paisa
      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 = "" ' Null out the temporary function value.
      If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
      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 ' If value between 20-99...
      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)) ' Retrieve ones place.
      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

  12. Sultan Ahmed says:

    How can I download vba code to my phone?

  13. haider says:

    i just want the wording not any currency. what should i do?

  14. Guruprasad says:

    Thank you Bro....

  15. Jay says:

    Hi, can i have the code without dollars and cents, E.g.
    Four Million Six Hundred Three Thousand Four Hundred Twenty Two

  16. Mujahid Azeem says:

    Hi,
    Could you tell me the code where I can mention "and" before the last figures e.g. Rs 1,987,290 (Rupees one million nine Hundred eighty seven thousand two hundred and ninety only)

  17. Zainul Abdeen says:

    Thanks you very much....

  18. ARNON says:

    SIMPLE, LOL, YOUR MACROS WORKED FIRST TIME, NO PROBLEMS, ONLY REQUEST IS FOR A CHANGE TO 00/00...01/00...03/00 AND SO ON INSTEAD OF CENTS, GOT YOURS TO WORK 00/00 AND 01/00 TO WORK, BUT AFTER THAT, ALL IS TEXT /00. SO I DELETED CENTS ALL TOGETHER TILL I GET THE CORRECT MACROS FOR THE OO/00 TO 99/00, PLEASE AND THANKS

    • Arvin says:

      I need the answer for this

    • David Zahn says:

      Here is my solution in a shorter macro:
      Function NumberToWords(ByVal StartNumber As Currency) As String

      Dim Buffer As String
      Dim Dollars
      Dim Cents
      Dim NumberofGroups
      Dim NumberSegment
      Dim Hundreds
      Dim Tens
      Dim Ones
      GroupNames = Array("", "Thousand ", "Million ", "Billion ", "Trillion ")
      OnesNames = Array("", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine ", "Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen ")
      TensNames = Array("", "", "Twenty ", "Thirty ", "Fourty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety ")

      Dollars = Fix(StartNumber)
      Cents = Fix(100 * (StartNumber - Fix(StartNumber)) + 0.5)
      NumberofGroups = Fix((Log(Dollars) / Log(10)) / 3)

      Dim i
      For i = NumberofGroups To 0 Step -1
      NumberSegment = Fix(Dollars / 10^ ^ (i * 3))
      Hundreds = Fix(NumberSegment / 100)
      Tens = Fix((NumberSegment - (Hundreds * 100)) / 10)
      Ones = NumberSegment - (Hundreds * 100) - (Tens * 10)

      If Hundreds > 0 Then
      Buffer = Buffer + OnesNames(Hundreds) + "Hundred "
      End If
      If Tens > 0 Then
      If Tens > 1 Then
      Buffer = Buffer + TensNames(Tens) + OnesNames(Ones)
      Else
      Buffer = Buffer + OnesNames(Tens * 10 + Ones)
      End If
      Else
      Buffer = Buffer + OnesNames(Ones)
      End If

      If NumberSegment > 0 Then
      Buffer = Buffer + GroupNames(i)
      End If

      Dollars = Dollars - (NumberSegment * 10^ ^ (i * 3))
      Next i

      Buffer = Buffer + "and "
      If Cents < 10 Then
      Buffer = Buffer + "0"
      End If
      Buffer = Buffer + Trim(Str(Cents)) + "/100 *****************************************"

      NumberToWords = Buffer

      End Function

  19. Manjeet kimar says:

    when i copy and paste this, it gives me errors, what am i doing wrong?

  20. Mike says:

    Hi, Can please I have the code without dollars and cents? thanks

    • Raja Zeeshan Khaliq says:

      Hey Mike!
      do you get the code without dollars and cents
      i also need this code
      if you get this code please send me
      i have really need this code

  21. Yannick says:

    It working very well. Thank's

  22. Fahmid says:

    Thanks for authentic codes. It works where codes from Microsoft gave an error message.
    Best wushes!
    Regards,

  23. Marien says:

    Thank you for this wonderful Module. Take care.

  24. Lito Santos says:

    tried it and it worked:
    $866.96 Eight Hundred Sixty Six Dollars and Ninety Five Cents
    $866.955 Eight Hundred Sixty Six Dollars and Ninety Five Cents
    but it does not round up.
    it is supposed to be :
    Eight Hundred Sixty Six Dollars and Ninety Six Cents

    Please advise.

  25. Bobby Macias says:

    Hello. I am wanted to enter the numbers 1 - 4 in each individual cell in an entire column. Once i insert the number and push ENTER, i want a text to replace the number based on which text i attach to that number. For example. The text for 1 is "Shut", i insert one into the cell and hit enter and it changes the value 1 to "shut

  26. uzzal says:

    thanks brother

  27. Greg Lomboy says:

    Why do I keep on getting #Name? Send Help please

  28. Govind says:

    How To convert 48000 RS in English word in M S Excle

  29. Houcine says:

    Hi,
    I need to convert a number with three digits after the decimal point, for example:
    122,145 --> one hundred twenty two dollars one hundred forty five cents.
    Thank you in advance.

  30. moo says:

    Hi,I need the number without the code of dollers and cents,thanks

  31. Hisham says:

    Hello, the code is great! I'm using to print checks, so I need to add the word "only" at the end of the spelled number (ie twenty one dollars only). How can I achieve this?

  32. Alvin says:

    Hi,

    I'd like to convert in this format
    P151.50 = One Hundred Fifty-One & 50/100 only

    Thanks,

    • Alvin says:

      UPDATE
      I was able to solve this but works only on Windows 8, 8.1, & 10 Machines only
      here is the code
      Option Explicit

      '****************' Main Function *'****************
      Function SpellNumber(ByVal MyNumber)
      Dim Pesos, Cents, Temp
      Dim DecimalPlace, Count
      ReDim Place(9) As String
      Place(2) = " Thousand "
      Place(3) = " Million "
      Place(4) = " Billion "
      Place(5) = " Trillion " ' String representation of amount
      MyNumber = Trim(Str(MyNumber)) ' Position of decimal place 0 if none
      DecimalPlace = InStr(MyNumber, ".")
      'Convert cents and set MyNumber to Peso amount
      If DecimalPlace > 0 Then
      Cents = Right(MyNumber, 2)
      MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
      End If
      Count = 1
      Do While MyNumber ""
      Temp = GetHundreds(Right(MyNumber, 3))
      If Temp "" Then Pesos = Temp & Place(Count) & Pesos
      If Len(MyNumber) > 3 Then
      MyNumber = Left(MyNumber, Len(MyNumber) - 3)
      Else
      MyNumber = ""
      End If
      Count = Count + 1
      Loop
      Select Case Pesos
      Case ""
      Pesos = "No Pesos"
      Case "One"
      Pesos = "One Peso"
      Case Else
      Pesos = Pesos & " Pesos"
      End Select
      Select Case Cents
      Case ""
      Cents = " Only"
      Case "1"
      Cents = " & .1/100 Cent Only"
      Case Else
      Cents = " & " & (Cents) & "/100 Only"
      End Select
      SpellNumber = Pesos & Cents
      End Function
      '*******************************************
      ' Converts a number from 100-999 into text *
      '*******************************************
      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
      '*********************************************
      ' Converts a number from 10 to 99 into text. *
      '*********************************************
      Function GetTens(TensText)
      Dim Result As String
      Result = "" 'null out the temporary function value
      If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19
      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 ' If value between 20-99
      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)) 'Retrieve ones place
      End If
      GetTens = Result
      End Function
      '*******************************************
      ' Converts a number from 1 to 9 into text. *
      '*******************************************
      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

      Sub test()
      Dim number As Double
      number = Range("A1").Value
      Range("A2").Value = SpellNumber(number)
      End Sub

  33. Josef+ says:

    Thanks a lot. i edited the currency bit from Dollars to GHCedis & Pesewas and it worked great! so grateful.

  34. John Downes says:

    Mate you are a genius - thanks a million

  35. John Downes says:

    Mate you are a genius - thanks a million

  36. dan j says:

    i got an error. "Ambiguous name detected: SpellNumber" ..how i gonna solve this?

    Thanks a lot

  37. Prashanth Nair says:

    Please help me get the above coding for converting Rupees as value

  38. Umair Ahmad says:

    done. Thank you so much

  39. sakthivel says:

    hai, i need to change the above coding to indian currency

  40. SURAJMOHAN says:

    hi guys
    i cant use VBA in my company lap .
    please help me to convert number to text in INR format only by suing any formulas without using macros

  41. MITESH says:

    Thanks a lot for sharing formula. Amazing...

  42. saurav narvekar says:

    dear sir,
    what do if i want to spell a number in rupees ?
    regard,
    saurav narvekar

  43. Likhith says:

    It is very helpful for me. but some changes required.
    if There is Multiple Decimals then how do we Convert calculation shows Wrong.
    Example : 149.149 = Spellnumber(One Hundred Forty Nine Dollars and Fourteen Cents.
    But it has to be fifteen Cents how to do it pls help.

  44. Shah Faisal says:

    Formula updated from Dollar to Rupees
    Option Explicit
    'Main Function
    Function SpellNumber(ByVal MyNumber)
    Dim Rupees, Paisa, Temp
    Dim DecimalPlace, Count
    ReDim Place(9) As String
    Place(2) = " Thousand "
    Place(3) = " Million "
    Place(4) = " Billion "
    Place(5) = " Trillion "

    MyNumber = Trim(Str(MyNumber))
    DecimalPlace = InStr(MyNumber, ".")
    If DecimalPlace > 0 Then
    Paisa = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _
    "00", 2))
    MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
    End If
    Count = 1
    Do While MyNumber ""
    Temp = GetHundreds(Right(MyNumber, 3))
    If Temp "" Then Rupees = Temp & Place(Count) & Rupees
    If Len(MyNumber) > 3 Then
    MyNumber = Left(MyNumber, Len(MyNumber) - 3)
    Else
    MyNumber = ""
    End If
    Count = Count + 1
    Loop
    Select Case Rupees
    Case ""
    Rupees = "No Rupees"
    Case "One"
    Rupees = "One Dollar"
    Case Else
    Rupees = Rupees & " Rupees"
    End Select
    Select Case Paisa
    Case ""
    Paisa = " and No Paisa"
    Case "One"
    Paisa = " and One Cent"
    Case Else
    Paisa = " and " & Paisa & " Paisa"
    End Select
    SpellNumber = Rupees & Paisa
    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 = "" ' Null out the temporary function value.
    If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
    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 ' If value between 20-99...
    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)) ' Retrieve ones place.
    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
    -------------------------------
    Regards

    • Mihir Shah says:

      Hey, thank you for the code. However, I am getting an error stating syntax error with Function SpellNumber(ByVal MyNumber) highlighted in yellow & Do while MyNumber"" highlighted too..
      Please help!

  45. Bilal says:

    Thanks. This works. But now the question is how to permanenelty add this formula in excel 2016 because I need this in many sheets and everytime i'm unable to add formula in excel.

  46. jamshad says:

    can i get code in uae dhirham and fils
    in exel cell my total amount that amound i want to convert

  47. akram says:

    we require only mention in words, from any number for example
    11,223,569 Eleven Million Two Hundred Twenty Three Thousand Five Hundred Sixty Nine Only
    145,201 One Hundred Forty Five Thousand Two Hundred One Only
    5,300 Five Thousand Three Hundred
    Very Thanks
    Akram Iqbal

  48. Rajendra says:

    This code is showing error for 100 crores it is showing 10 crores only

  49. burhanuddin says:

    can i change the currency like its dollars so can i change to dirhams and the fonts too

    • Xyrah says:

      For Dirhams and Fills; but not tested if every amount will work out fine.

      Option Explicit

      'Main Function

      Function SpellNumber(ByVal MyNumber)

      Dim Dirhams, Fills, Temp

      Dim DecimalPlace, Count

      ReDim Place(9) As String

      Place(2) = " Thousand "

      Place(3) = " Million "

      Place(4) = " Billion "

      Place(5) = " Trillion "

      ' String representation of amount.

      MyNumber = Trim(Str(MyNumber))

      ' Position of decimal place 0 if none.

      DecimalPlace = InStr(MyNumber, ".")

      ' Convert Fills and set MyNumber to dirham amount.

      If DecimalPlace > 0 Then

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

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

      End If

      Count = 1

      Do While MyNumber ""

      Temp = GetHundreds(Right(MyNumber, 3))

      If Temp "" Then Dirhams = Temp & Place(Count) & Dirhams

      If Len(MyNumber) > 3 Then

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

      Else

      MyNumber = ""

      End If

      Count = Count + 1

      Loop

      Select Case Dirhams

      Case ""

      Dirhams = ""

      Case "One"

      Dirhams = "One Dirham"

      Case Else

      Dirhams = Dirhams & " Dirhams"

      End Select

      Select Case Fills

      Case ""

      Fills = ""

      Case "One"

      Fills = " and One Fills"

      Case Else

      Fills = " and " & Fills & " Fills"

      End Select

      SpellNumber = Dirhams & Fills

      End Function

      ' Converts a number from 100-999 into text

      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

      ' Converts a number from 10 to 99 into text.

      Function GetTens(TensText)
      Dim Result As String
      Result = "" ' Null out the temporary function value.
      If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
      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 ' If value between 20-99...
      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)) ' Retrieve ones place.
      End If
      GetTens = Result
      End Function

      ' Converts a number from 1 to 9 into text.

      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

  50. Rajesh says:

    How to write formula for
    45556.545
    Forty Five Thousand Five Hundred Fifty six JOD and five hundred forty five fils
    Please help me.

  51. Glenn manlapaz says:

    28,205.8

  52. yousuf says:

    I dont want to show in word in Paisa.
    Now showing
    4567.23= Taka Four Thousand Five hundred Sixty Seven twenty three paise only.
    But I want to show Like this:
    4567.23= Taka Four Thousand Five hundred Sixty Seven only.
    Please help me:
    Function SpellNumber(amt As Variant) As Variant
    Dim FIGURE As Variant
    Dim LENFIG As Integer
    Dim i As Integer
    Dim WORDs(19) As String
    Dim tens(9) As String
    WORDs(1) = "One"
    WORDs(2) = "Two"
    WORDs(3) = "Three"
    WORDs(4) = "Four"
    WORDs(5) = "Five"
    WORDs(6) = "Six"
    WORDs(7) = "Seven"
    WORDs(8) = "Eight"
    WORDs(9) = "Nine"
    WORDs(10) = "Ten"
    WORDs(11) = "Eleven "
    WORDs(12) = "Twelve "
    WORDs(13) = "Thirteen "
    WORDs(14) = "Fourteen "
    WORDs(15) = "Fifteen "
    WORDs(16) = "Sixteen "
    WORDs(17) = "Seventeen "
    WORDs(18) = "Eighteen "
    WORDs(19) = "Nineteen "
    tens(2) = "Twenty "
    tens(3) = "Thirty "
    tens(4) = "Fourty "
    tens(5) = "Fifty "
    tens(6) = "Sixty "
    tens(7) = "Seventy "
    tens(8) = "Eighty "
    tens(9) = "Ninety "
    FIGURE = amt
    FIGURE = Format(FIGURE, "FIXED")
    FIGLEN = Len(FIGURE)
    If FIGLEN 1 Then
    SpellNumber = "Taka "
    ElseIf Val(Left(FIGURE, 9)) = 1 Then
    SpellNumber = "Taka "
    End If
    For i = 1 To 3
    If Val(Left(FIGURE, 2)) 0 Then
    SpellNumber = SpellNumber & WORDs(Val(Left(FIGURE, 2)))
    ElseIf Val(Left(FIGURE, 2)) > 19 Then
    SpellNumber = SpellNumber & tens(Val(Left(FIGURE, 1)))
    SpellNumber = SpellNumber & WORDs(Val(Right(Left(FIGURE, 2), 1)))
    End If
    If i = 1 And Val(Left(FIGURE, 2)) > 0 Then
    SpellNumber = SpellNumber & " Crore "
    ElseIf i = 2 And Val(Left(FIGURE, 2)) > 0 Then
    SpellNumber = SpellNumber & " Lakh "
    ElseIf i = 3 And Val(Left(FIGURE, 2)) > 0 Then
    SpellNumber = SpellNumber & " Thousand "
    End If
    FIGURE = Mid(FIGURE, 3)
    Next i
    If Val(Left(FIGURE, 1)) > 0 Then
    SpellNumber = SpellNumber & WORDs(Val(Left(FIGURE, 1))) + " Hundred "
    End If
    FIGURE = Mid(FIGURE, 2)
    If Val(Left(FIGURE, 2)) 0 Then
    SpellNumber = SpellNumber & WORDs(Val(Left(FIGURE, 2)))
    ElseIf Val(Left(FIGURE, 2)) > 19 Then
    SpellNumber = SpellNumber & tens(Val(Left(FIGURE, 1)))
    SpellNumber = SpellNumber & WORDs(Val(Right(Left(FIGURE, 2), 1)))
    End If
    FIGURE = Mid(FIGURE, 4)
    If Val(FIGURE) > 0 Then
    SpellNumber = SpellNumber & " Paise "
    If Val(Left(FIGURE, 2)) 0 Then
    SpellNumber = SpellNumber & WORDs(Val(Left(FIGURE, 2)))
    ElseIf Val(Left(FIGURE, 2)) > 19 Then
    SpellNumber = SpellNumber & tens(Val(Left(FIGURE, 1)))
    SpellNumber = SpellNumber & WORDs(Val(Right(Left(FIGURE, 2), 1)))
    End If
    End If
    FIGURE = amt
    FIGURE = Format(FIGURE, "FIXED")
    If Val(FIGURE) > 0 Then
    SpellNumber = SpellNumber & " Only. "
    End If
    End Function

  53. joel says:

    I would like this one for Bahraini Dinar..as the whole process and change the currency there will be always an error. please help me on this...

  54. Edge says:

    Thank you for this. But how to do it like this: 190708 turn to (One-Nine-Zero-Seven-Zero-Eight)

    Is there a way to do it like that? Thank you very much!

  55. ALIDA says:

    currently we are using spellnumber like this.
    370,932.04 = Three Hundred Seventy Thousand Nine Hundred Thirty Two & 4/100 Pesos Only
    But due to bank requirement it should be like this.
    Three Hundred Seventy Thousand Nine Hundred Thirty Two & 04/100 Pesos Only
    Please help me how to do it. Thanks in advance

  56. Nou Nang says:

    Hi can anyone share me the excel add-in file of the Spell Number in USD? i cannot fine the excel Add-in File.

  57. Jos says:

    do you have the VBA code to convert numbers in French words

  58. mark says:

    can you remove the . before the cents and add a zero? eg. .1/100 Only to 10/100 Only

  59. tusher says:

    HOW TO MAKE IT APPLY ON EVERY EXCEL SHEET

  60. Charles Afetorgbor says:

    Convert
    1.Four thousand three hundred and thirty to number figures
    2.Three thousand and eighteen to number figures
    3.Eight thousand and forty three to number figures
    4.Nine thousand and seventy seven to number figures.
    Convert
    5. 9,44 to English words
    6. 2,019 to English words
    7. 7,003 to English words
    Thanks.

  61. Jepoy says:

    Function SpellNumber(ByVal MyNumber) - -During running the formula , error occurs in MyNumber

  62. Carol says:

    Hi sir!
    Good pm
    Ask ko po sana pano po iconvert numbers to peso in excel 2016 windows 10.using this format po: ex.: 120.50
    One Hundred Twenty Pesos and 50/100 Only
    Thanks Sir! GOD BLESS

  63. Shindie says:

    what if i want to convert the numbers only without currency like "dollars" what will be the code?

  64. ch venkataiah says:

    how to convert marks in words up to 100 only.
    please worte a link to this mail

  65. Umer says:

    How can we convert current on three decimal places in words
    For example 1,000.500 (One thousand ruppes and five hundred bz

  66. nabeel says:

    perfect.

  67. JAGDISH VAISHNAV says:

    i want to write number in word pnly

  68. REY ISIDORE GULLEBAN says:

    Can you please help the exact keyword for peso?

  69. Zameer says:

    Hi Experts,
    Kindly update the macro for 3 decimal points.(100.250 ie One hundred and two fifty only).
    Thanks in advance

  70. RAJU K SEKHARAN says:

    I want to SpellNumber as US Dollar One Thousand Four Hundred and Twenty Five and Cents 24 Only for 1,425.24. Please help me.

  71. Avinash says:

    Dear Experts,
    I need a to convert like this
    OMR 525,450.250
    Omani Rial Five Hundred Twenty Five Thousand Four Hundred Fifty and Baizas Two Hundred Fifty Only
    Kindly provide me the solution.
    Avinash

  72. Imam Hossain says:

    I want to publish as Dirhams and Fils instead of Dollars and Cents.

    kindly help me.

  73. Sahal says:

    Option Explicit
    'Main Function
    Function SpellNumber(ByVal MyNumber)
    Dim Dollars, Cents, Temp
    Dim DecimalPlace, Count
    ReDim Place(9) As String
    Place(2) = " Thousand "
    Place(3) = " Million "
    Place(4) = " Billion "
    Place(5) = " Trillion "
    ' String representation of amount.
    MyNumber = Trim(Str(MyNumber))
    ' Position of decimal place 0 if none.
    DecimalPlace = InStr(MyNumber, ".")
    ' Convert cents and set MyNumber to dollar 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 ""
    Temp = GetHundreds(Right(MyNumber, 3))
    If Temp "" Then Dollars = Temp & Place(Count) & Dollars
    If Len(MyNumber) > 3 Then
    MyNumber = Left(MyNumber, Len(MyNumber) - 3)
    Else
    MyNumber = ""
    End If
    Count = Count + 1
    Loop
    Select Case Dollars
    Case ""
    Dollars = "No Dollars"
    Case "One"
    Dollars = "One Dollar"
    Case Else
    Dollars = Dollars & " Dollars"
    End Select
    Select Case Cents
    Case ""
    Cents = " and No Cents"
    Case "One"
    Cents = " and One Cent"
    Case Else
    Cents = " and " & Cents & " Cents"
    End Select
    SpellNumber = Dollars & Cents
    End Function

    ' Converts a number from 100-999 into text
    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

    ' Converts a number from 10 to 99 into text.
    Function GetTens(TensText)
    Dim Result As String
    Result = "" ' Null out the temporary function value.
    If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
    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 ' If value between 20-99...
    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)) ' Retrieve ones place.
    End If
    GetTens = Result
    End Function

    ' Converts a number from 1 to 9 into text.
    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

  74. Ellie says:

    Hi, I need this code for windows 10/Excel 365 in both Euro and Dollars. The one provided on the website doesn't work... it highlights Function SpellNumber(ByVal MyNumber) and errors. Either with #VALUE or just shows the formula. Can someone please help?

  75. Gehan says:

    Thank you so much :), It works perfectly

  76. SALIL says:

    Can you send the formula as per given below: 1500.250
    "One Thousand Five Hundred And Baisa 250/1000 Only

  77. ZOE says:

    How to write formula for
    2675.20
    TWO THOUSAND SIX HUNDRED SEVENTY FIVE AND CENTS TWENTY ONLY
    Please help me.

  78. ali says:

    Hello,

    When I am converting Excel File into PDF its now showing Amount in words its showing #NAME?

  79. Dharmendhar says:

    How do this applicable for all new sheets?

    Do i need to copy this entire code into all the new sheets every time, in case if i want to use this function?
    Thanks!

  80. SALIL says:

    Can you send the formula as per given below: 1500.250
    "One Thousand Five Hundred And Baisa 250/1000 Only

  81. Pratik Joshi says:

    I want Indian Rupees Conversation Code

  82. rajesh singh says:

    currently we are using spellnumber like this.
    370,932.04 = Three Hundred Seventy Thousand Nine Hundred Thirty Two & Paiase Four Only
    But i required it should be like this.
    Three Lakh Seventy Thousand Nine Hundred Thirty Two & Paiase Four Only
    Please help me how to do it. Thanks in advance

  83. MOHAMAD HASSAN says:

    I follow all steps twice but its not work?

  84. Nitin says:

    Kindly Help me to retrieve the value mentioned below
    The formulae is working fine....
    if the amount is in Lakhs like 318,600.00
    So it shows the amount in Three Hundred Eighteen Thousand Six Hundred and Zero Piase(INR) Only
    I want the result in One Lakh Eighteen Thousand Thousand Six Hundred and Zero Paise Only.

    What changes in the equation formulae in spell number required.

  85. Amal says:

    Hi,
    I have tried the code and its great.
    I would like to use it for Kuwait dinar and need to convert 2 decimal places to 3 decimal places.
    Example:
    now : 5.5 gives - Five dollars and fifty fils
    I need : 5.5 gives - five dollars and five hundred fils
    Please help
    Thank you in advance
    Regards,
    Amal

  86. PRAISE says:

    The formula is working fro just one sheet in the whole workbook. how do i make it work on other sheets without having to retype the formula each time

  87. Ravneet Singh says:

    All- I want in this way can someone help- "Rupees Seven Thousand seven Hundred Only" or "INR Seven Thousand Seven Hundred only"

    • Hello Ravneet!
      I’m sorry but your task is not entirely clear to me.
      For me to be able to help you better, please describe your task in more detail. Please let me know in more detail what you were trying to find, what formula you used and what problem or error occurred. Give an example of the source data and the expected result. It’ll help me understand it better and find a solution for you. Thank you.

      • Ravneet Singh says:

        First of all- thank you so much for replying.
        Currently I have the Value in my Cell A1- "71,000"
        Spell Check using the above number " Seventy one Thousand Rupees and No Paise"
        I want this desired result to be " Rupees Seventy One Thousand Only"
        The module I have used is as below.
        Option Explicit

        'Main Function

        Function SpellNumber(ByVal MyNumber)

        Dim Rupees, Paise, Temp

        Dim DecimalPlace, Count

        ReDim Place(9) As String

        Place(2) = " Thousand "

        Place(3) = " Million "

        Place(4) = " Billion "

        Place(5) = " Trillion "

        ' String representation of amount.

        MyNumber = Trim(Str(MyNumber))

        ' Position of decimal place 0 if none.

        DecimalPlace = InStr(MyNumber, ".")

        ' Convert Paise and set MyNumber to dollar amount.

        If DecimalPlace > 0 Then

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

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

        End If

        Count = 1

        Do While MyNumber ""

        Temp = GetHundreds(Right(MyNumber, 3))

        If Temp "" Then Rupees = Temp & Place(Count) & Rupees

        If Len(MyNumber) > 3 Then

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

        Else

        MyNumber = ""

        End If

        Count = Count + 1

        Loop

        Select Case Rupees

        Case ""

        Rupees = "No Rupees"

        Case "One"

        Rupees = "One Dollar"

        Case Else

        Rupees = Rupees & " Rupees"

        End Select

        Select Case Paise

        Case ""

        Paise = " and No Paise"

        Case "One"

        Paise = " and One Cent"

        Case Else

        Paise = " and " & Paise & " Paise"

        End Select

        SpellNumber = Rupees & Paise

        End Function

        ' Converts a number from 100-999 into text

        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

        ' Converts a number from 10 to 99 into text.

        Function GetTens(TensText)

        Dim Result As String

        Result = "" ' Null out the temporary function value.

        If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...

        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 ' If value between 20-99...

        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)) ' Retrieve ones place.

        End If

        GetTens = Result

        End Function

        ' Converts a number from 1 to 9 into text.

        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

  88. Disha says:

    thank you this is great

  89. Malik Masood says:

    This is good, but how it is write with CAPS?

  90. Mr Freez says:

    Thank You. It worked perfectly for me.

  91. MOHAMMAD IBRAHIM says:

    DEAR CONCERN,
    JUST LET ME KNOW THE BELOW IN WORD DETAILS:
    $ 2500.23456
    In words: ?

  92. Piyush Prasad says:

    Hi,
    i tried, but could not get through.
    Numbers: 199600 / 1136540
    To be converted to: Rupees One lakh ninety nine thousand six hundred only. / Rupees Eleven lakh thirty six thousand five hundred fourty only.

    Can any one please help?

  93. Raza says:

    Hello Every One

    Good day,

    I'm using below code for last 5 years and today I discovered that there is small error.

    When I write minus -10,000 it shows on "Only Hundred Ten Thousand"
    When I write minus +10,000 it shows on "Only Ten Thousand"

    Please correct my formula I attached my excel sheet.

    Below example:

    (10,000.99) Only Hundred Ten Thousand & 99/100 Riyals
    10,000.99 Only Ten Thousand & 99/100 Riyals
    (10,000,000.99) Only Hundred Ten Million & 99/100 Riyals
    10,000,000.99 Only Ten Million & 99/100 Riyals
    (10,000,000,000.99) Only Hundred Ten Billion & 99/100 Riyals
    10,000,000,000.99 Only Ten Billion & 99/100 Riyals
    (10,000,000,000,000.90) Only Hundred Ten Trillion & 90/100 Riyals
    10,000,000,000,000.90 Only Ten Trillion & 90/100 Riyals

    Formula =spellbilling

    MY VBA CODE:

    'Main Function
    Function SpellBilling(ByVal MyNumber)
    Dim Riyals, Halalas, Temp
    Dim DecimalPlace, Count
    ReDim Place(9) As String
    Place(2) = " Thousand "
    Place(3) = " Million "
    Place(4) = " Billion "
    Place(5) = " Trillion "
    ' String representation of amount.
    MyNumber = Trim(Str(MyNumber))
    ' Position of decimal place 0 if none.
    DecimalPlace = InStr(MyNumber, ".")
    ' Convert Halalas and set MyNumber to Riyal amount.
    If DecimalPlace > 0 Then
    Halalas = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _
    "00", 2))
    MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
    End If
    Count = 1
    Do While MyNumber ""
    Temp = GetHundreds(Right(MyNumber, 3))
    If Temp "" Then Riyals = Temp & Place(Count) & Riyals
    If Len(MyNumber) > 3 Then
    MyNumber = Left(MyNumber, Len(MyNumber) - 3)
    Else
    MyNumber = ""
    End If
    Count = Count + 1
    Loop
    Select Case Riyals
    Case ""
    Riyals = "No Riyal"
    Case "One"
    Riyals = "Only One Riyal"
    Case Else
    Riyals = "Only " & Riyals
    Riyals = Riyals & ""
    End Select
    Select Case Halalas
    Case ""
    Halalas = " & 00/00 Riyals"
    Case "One"
    Halalas = " & 01/100 Riyals"
    Case "Two"
    Halalas = " & 02/100 Riyals"
    Case "Three"
    Halalas = " & 03/100 Riyals"
    Case "Four"
    Halalas = " & 04/100 Riyals"
    Case "Five"
    Halalas = " & 05/100 Riyals"
    Case "Six"
    Halalas = " & 06/100 Riyals"
    Case "Seven"
    Halalas = " & 07/100 Riyals"
    Case "Eight"
    Halalas = " & 08/100 Riyals"
    Case "Nine"
    Halalas = " & 09/100 Riyals"
    Case "Ten"
    Halalas = " & 10/100 Riyals"
    Case "Eleven"
    Halalas = " & 11/100 Riyals"
    Case "Twelve"
    Halalas = " & 12/100 Riyals"
    Case "Thirteen"
    Halalas = " & 13/100 Riyals"
    Case "Fourteen"
    Halalas = " & 14/100 Riyals"
    Case "Fifteen"
    Halalas = " & 15/100 Riyals"
    Case "Sixteen"
    Halalas = " & 16/100 Riyals"
    Case "Seventeen"
    Halalas = " & 17/100 Riyals"
    Case "Eighteen"
    Halalas = " & 18/100 Riyals"
    Case "Nineteen"
    Halalas = " & 19/100 Riyals"
    Case "Twenty "
    Halalas = " & 20/100 Riyals"
    Case "Twenty One"
    Halalas = " & 21/100 Riyals"
    Case "Twenty Two"
    Halalas = " & 22/100 Riyals"
    Case "Twenty Three"
    Halalas = " & 23/100 Riyals"
    Case "Twenty Four"
    Halalas = " & 24/100 Riyals"
    Case "Twenty Five"
    Halalas = " & 25/100 Riyals"
    Case "Twenty Six"
    Halalas = " & 26/100 Riyals"
    Case "Twenty Seven"
    Halalas = " & 27/100 Riyals"
    Case "Twenty Eight"
    Halalas = " & 28/100 Riyals"
    Case "Twenty Nine"
    Halalas = " & 29/100 Riyals"
    Case "Thirty "
    Halalas = " & 30/100 Riyals"
    Case "Thirty One"
    Halalas = " & 31/100 Riyals"
    Case "Thirty Two"
    Halalas = " & 32/100 Riyals"
    Case "Thirty Three"
    Halalas = " & 33/100 Riyals"
    Case "Thirty Four"
    Halalas = " & 34/100 Riyals"
    Case "Thirty Five"
    Halalas = " & 35/100 Riyals"
    Case "Thirty Six"
    Halalas = " & 36/100 Riyals"
    Case "Thirty Seven"
    Halalas = " & 37/100 Riyals"
    Case "Thirty Eight"
    Halalas = " & 38/100 Riyals"
    Case "Thirty Nine"
    Halalas = " & 39/100 Riyals"
    Case "Forty "
    Halalas = " & 40/100 Riyals"
    Case "Forty One"
    Halalas = " & 41/100 Riyals"
    Case "Forty Two"
    Halalas = " & 42/100 Riyals"
    Case "Forty Three"
    Halalas = " & 43/100 Riyals"
    Case "Forty Four"
    Halalas = " & 44/100 Riyals"
    Case "Forty Five"
    Halalas = " & 45/100 Riyals"
    Case "Forty Six"
    Halalas = " & 46/100 Riyals"
    Case "Forty Seven"
    Halalas = " & 47/100 Riyals"
    Case "Forty Eight"
    Halalas = " & 48/100 Riyals"
    Case "Forty Nine"
    Halalas = " & 49/100 Riyals"
    Case "Fifty "
    Halalas = " & 50/100 Riyals"
    Case "Fifty One"
    Halalas = " & 51/100 Riyals"
    Case "Fifty Two"
    Halalas = " & 52/100 Riyals"
    Case "Fifty Three"
    Halalas = " & 53/100 Riyals"
    Case "Fifty Four"
    Halalas = " & 54/100 Riyals"
    Case "Fifty Five"
    Halalas = " & 55/100 Riyals"
    Case "Fifty Six"
    Halalas = " & 56/100 Riyals"
    Case "Fifty Seven"
    Halalas = " & 57/100 Riyals"
    Case "Fifty Eight"
    Halalas = " & 58/100 Riyals"
    Case "Fifty Nine"
    Halalas = " & 59/100 Riyals"
    Case "Sixty "
    Halalas = " & 60/100 Riyals"
    Case "Sixty One"
    Halalas = " & 61/100 Riyals"
    Case "Sixty Two"
    Halalas = " & 62/100 Riyals"
    Case "Sixty Three"
    Halalas = " & 63/100 Riyals"
    Case "Sixty Four"
    Halalas = " & 64/100 Riyals"
    Case "Sixty Five"
    Halalas = " & 65/100 Riyals"
    Case "Sixty Six"
    Halalas = " & 66/100 Riyals"
    Case "Sixty Seven"
    Halalas = " & 67/100 Riyals"
    Case "Sixty Eight"
    Halalas = " & 68/100 Riyals"
    Case "Sixty Nine"
    Halalas = " & 69/100 Riyals"
    Case "Seventy "
    Halalas = " & 70/100 Riyals"
    Case "Seventy One"
    Halalas = " & 71/100 Riyals"
    Case "Seventy Two"
    Halalas = " & 72/100 Riyals"
    Case "Seventy Three"
    Halalas = " & 73/100 Riyals"
    Case "Seventy Four"
    Halalas = " & 74/100 Riyals"
    Case "Seventy Five"
    Halalas = " & 75/100 Riyals"
    Case "Seventy Six"
    Halalas = " & 76/100 Riyals"
    Case "Seventy Seven"
    Halalas = " & 77/100 Riyals"
    Case "Seventy Eight"
    Halalas = " & 78/100 Riyals"
    Case "Seventy Nine"
    Halalas = " & 79/100 Riyals"
    Case "Eighty "
    Halalas = " & 80/100 Riyals"
    Case "Eighty One"
    Halalas = " & 81/100 Riyals"
    Case "Eighty Two"
    Halalas = " & 82/100 Riyals"
    Case "Eighty Three"
    Halalas = " & 83/100 Riyals"
    Case "Eighty Four"
    Halalas = " & 84/100 Riyals"
    Case "Eighty Five"
    Halalas = " & 85/100 Riyals"
    Case "Eighty Six"
    Halalas = " & 86/100 Riyals"
    Case "Eighty Seven"
    Halalas = " & 87/100 Riyals"
    Case "Eighty Eight"
    Halalas = " & 88/100 Riyals"
    Case "Eighty Nine"
    Halalas = " & 89/100 Riyals"
    Case "Ninety "
    Halalas = " & 90/100 Riyals"
    Case "Ninety One"
    Halalas = " & 91/100 Riyals"
    Case "Ninety Two"
    Halalas = " & 92/100 Riyals"
    Case "Ninety Three"
    Halalas = " & 93/100 Riyals"
    Case "Ninety Four"
    Halalas = " & 94/100 Riyals"
    Case "Ninety Five"
    Halalas = " & 95/100 Riyals"
    Case "Ninety Six"
    Halalas = " & 96/100 Riyals"
    Case "Ninety Seven"
    Halalas = " & 97/100 Riyals"
    Case "Ninety Eight"
    Halalas = " & 98/100 Riyals"
    Case "Ninety Nine"
    Halalas = " & 99/100 Riyals"

    Case Else
    Halalas = " & " & Halalas & " Halalas"
    End Select
    SpellBilling = Riyals & Halalas
    End Function

    ' Converts a number from 100-999 into text
    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

    ' Converts a number from 10 to 99 into text.
    Function GetTens(TensText)
    Dim Result As String
    Result = "" ' Null out the temporary function value.
    If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
    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 ' If value between 20-99...
    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)) ' Retrieve ones place.
    End If
    GetTens = Result
    End Function

    ' Converts a number from 1 to 9 into text.
    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

  94. NANA says:

    i will like to know how to get the currency in Ghana cedis and peswas. the currency input in the formula is dollars. kindly help me.

  95. SALIL says:

    Can you send the formula as per given below: 1501.250
    "One Thousand Five Hundred One And Baisa 250/1000 Only

  96. Patricia Almeida says:

    Thank you!!! it worked for me..

  97. Cherie says:

    Hi, need help like as below :
    294,922.30
    Two Hundred Ninety Four Thousand Nine Hundred Twenty Two And Cent Thirty only
    have any code for this?
    help help help & thank you so much...huhu...

  98. Dilip Kumar says:

    Hi, Thanks for the code.
    When i use the formula for 100.50 it shows "One Hundred Dollars and Fifty Cents"
    Where as i want it to show as " Dollars One Hundred and Cents Fifty Only"
    In Which Dollars & Cents to be shown before the numbers & Only to be shown at the end.
    Please let me know what i need to change in the code to get the above result.
    Thanks & regards,

  99. Tala Roland says:

    Hello, Please i need some orientation on the said codes presented above. when i follow the procedure shown above the result i get after gibing the spellnumber command is #NAME? Please how should i proceed with such result.
    Please help me. Thanks

  100. Zulfi Farsath says:

    Option Explicit
    'Main Function
    Function SpellNumber(ByVal MyNumber)
    Dim Dhirams, Cents, Temp
    Dim DecimalPlace, Count
    ReDim Place(9) As String
    Place(2) = " Thousand "
    Place(3) = " Million "
    Place(4) = " Billion "
    Place(5) = " Trillion "

    MyNumber = Trim(Str(MyNumber))
    DecimalPlace = InStr(MyNumber, ".")
    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 ""
    Temp = GetHundreds(Right(MyNumber, 3))
    If Temp "" Then Dhirams = Temp & Place(Count) & Dhirams
    If Len(MyNumber) > 3 Then
    MyNumber = Left(MyNumber, Len(MyNumber) - 3)
    Else
    MyNumber = ""
    End If
    Count = Count + 1
    Loop
    Select Case Dhirams
    Case ""
    Dhirams = "No Dhirams"
    Case "One"
    Dhirams = "One Dhirams"
    Case Else
    Dhirams = Dhirams & " Dhirams"
    End Select
    Select Case Cents
    Case ""
    Cents = " and No Cents"
    Case "One"
    Cents = " and One Cent"
    Case Else
    Cents = " and " & Cents & " Cents"
    End Select
    SpellNumber = Dhirams & 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 = "" ' Null out the temporary function value.
    If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
    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 ' If value between 20-99...
    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)) ' Retrieve ones place.
    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

Post a comment



Thank you for your comment! When posting a question, please be very clear and concise. This will help us provide a quick and relevant solution to your query. We cannot guarantee that we will answer every question, but we'll do our best :)