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 (e.g. 123.45 to "one hundred and twenty three, forty five"), but spell out dollars and cents (e.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&hellip; 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&hellip; 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, or 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.

515 comments

  1. 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.?????????

    • 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

      • 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.

  2. 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

  3. 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

    • 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

    • 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, ",")

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

  5. how can i convert numbers to words for Peso

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

      dollars to pesos
      dollar to peso

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

  6. 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

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

      • 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

        • than save ur file

        • 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.

  7. please provide sample video

  8. Hello,

    I'm trying to convert the numbers into a weight.
    ex. 2000 = two thousand pounds
    Is there a way to easily convert that?

    Regards,
    Bryan

  9. How can I convert 123,156,236.64 KG into words? Please help me

  10. Can anyone help with it converting negative numbers?

    for example:

    -£120.69 reading as Minus One Hundred Pound and Sixty Nine Pence

  11. I am use this formula but there is not convert amount in word format instead of that i show the formula in sheet. pl guide me.

  12. Finally it works on Excell 2010!!! Thank you, Sir!!

    I followed your instructions and it works!

  13. 123=One hundred and twenty three.
    But excel make it
    One hundred twenty three.
    How am I going to edit the code so that it can accept the "and" even when I type 20550 It should be able to read "Twenty Five Thousand Five Hundred and Fifty
    Please Note the "and"

  14. How not spelled if no cents.

  15. Every perfect, but error with unicode is "S" to "?"

  16. Please share the password of Popup Spell Zip File (add on to MS Excel) I have downloaded the Popup Spell Add on but while extracting it asks for password.

    Please help

  17. Excellent & easy way to convert number in word ..
    nothing to say .....

  18. Can one use =spellnumber to convert ordinary numbers, not currency) to words. If so how.

  19. Hi EveryOne

    Greeting for the day!!!

    I need solution that how to unhide hidden row which is hidden by advanced filter in vba. When i select all sheet and unhide the rows but it not work. Please suggest if anybody have any idea for it.

    Thanks,
    Ependra Singh
    9899808895

  20. Hi,

    Please give me one solution for convert sum amount to words in excel

  21. I Like This

  22. after closing excel file and open again this method doesn't work.
    please help me!

  23. since our currency is peso and the cents are express as centavos, i modified the code to reflect our currency...

    Option Explicit
    'Main Function
    Function SpellNumber(ByVal MyNumber)
    Dim Pesos, Centavos, 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
    Centavos = 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 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 Centavos
    Case ""
    Centavos = " "
    Case "One"
    Centavos = " and One Centavo"
    Case Else
    Centavos = " and " & Centavos & " Centavos"
    End Select
    SpellNumber = Pesos & Centavos
    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

  24. hello sir please provide code for Indian currency

    example. 100000 = one lac only
    1000 = one thousand
    100 = one hundred
    1000000 = ten lac only
    10000000 = one crore only

  25. hello sir please provide code for Indian currency
    example. 100000 = one lac only
    1000 = one thousand
    100 = one hundred
    1000000 = ten lac only
    10000000 = one crore only

  26. hi,

    I need to know how i can break the lines of number in words as if the word is too long i need to print in the second line of cheque. how i can do that.

  27. Thank you !
    Well done for Dinars and Euros !

  28. i got a problem with the excel which is unknown format number, i want to convert that in to 10 digit mobile numbers

    EX - ffffec0704fb682e5547b7d0d3da5527

  29. Can someone please help me making such a code that I only get "numbers converted into words",in excel i.e., without dollar or any any currency attached to it. Say I want to convert 2, 34 and 56, can it directly read two, thirty four , and fifty six respectively.

    I will appreciate such help.

  30. Hi Dear ,

    I tried converting into indian rupees .

    But CTRL+H function is not working

    It is showing the error when I type "Dollars"as ' we couldnt find what you are looking for "

    Pls help

  31. Hi,
    I'm trying to convert nums to words (in indian currency: like 448787 to four lakh fourty eight thousand seven hundred eighty seven only),but its not happening.
    Please help me & take me out of the problem.

  32. Hi,
    I'm trying to convert nums to words (in indian currency: like 448787 to four lakh fourty eight seven hundred eighty seven only),but its not happening.
    Please help me & take me out of the problem.

  33. I want to modify it for Indian system, I changed Dollar to Rupee, but changing Millions to Lakhs wont be correct as Million has 6 zeroes and Lakhs as 5. the array defined has terms differing by 3 zeroes, can you help out with modifying the array to incorporate Lakhs

  34. How can numbers be converted with no currency and if no cents to ignore cents bit
    Example
    5,455/= Five thousand Four hundred fifty five only
    5,455.50/= Five thousand Four hundred fifty five and Fifty cents only

  35. How to convert as follows:-
    1. 1,234 = One Thousand Two hundred And Thirty Four
    2. 1,200 = One Thousand And Two hundred?
    3. 1,202.50 = One Thousand Two hundred Two And Cents Fifty?
    4. 11,010 = Eleven Thousand And Ten?

    • Function NumToWord(ByVal N As Currency) As String

      Const Ten = 10@
      Const Hundred = Ten * Ten
      Const Thousand = Ten * Hundred
      Const Lakh = Thousand * Hundred
      Const Crore = Lakh * Hundred
      Const Million = Thousand * Thousand
      Const Billion = Thousand * Million
      Const Trillion = Thousand * Billion

      If (N = 0@) Then NumToWord = "zero": Exit Function

      Dim Buf As String: If (N < 0@) Then Buf = "negative " Else Buf = ""
      Dim Frac As Currency: Frac = Abs(N - Fix(N))
      If (N < 0@ Or Frac 0@) Then N = Abs(Fix(N))
      Dim AtLeastOne As Integer: AtLeastOne = N >= 1

      If (N >= Crore) Then
      Buf = Buf & NumToWordDigitGroup(Int(N / Crore)) & " Crore"
      N = N - Int(N / Crore) * Crore
      If (N >= 1@) Then Buf = Buf & " "
      End If

      If (N >= Lakh) Then
      Buf = Buf & NumToWordDigitGroup(Int(N / Lakh)) & " Lakh"
      N = N - Int(N / Lakh) * Lakh
      If (N >= 1@) Then Buf = Buf & " "
      End If

      If (N >= Thousand) Then
      Buf = Buf & NumToWordDigitGroup(N \ Thousand) & " Thousand"
      N = N Mod Thousand
      If (N >= 1@) Then Buf = Buf & " "
      End If

      If (N >= Hundred) Then
      Buf = Buf & NumToWordDigitGroup(N \ Hundred) & " hundred"
      N = N Mod Hundred
      If (N >= 1@) Then Buf = Buf & " "
      End If

      If (N >= 1@) Then
      Buf = Buf & NumToWordDigitGroup(N)
      End If

      NumToWord = Buf
      End Function

      Private Function NumToWordDigitGroup(ByVal N As Integer) As String

      Const Hundred = " hundred"
      Const One = "one"
      Const Two = "two"
      Const Three = "three"
      Const Four = "four"
      Const Five = "five"
      Const Six = "six"
      Const Seven = "seven"
      Const Eight = "eight"
      Const Nine = "nine"
      Dim Buf As String: Buf = ""
      Dim Flag As Integer: Flag = False

      Select Case (N \ 100)
      Case 0: Buf = "": Flag = False
      Case 1: Buf = One & Hundred: Flag = True
      Case 2: Buf = Two & Hundred: Flag = True
      Case 3: Buf = Three & Hundred: Flag = True
      Case 4: Buf = Four & Hundred: Flag = True
      Case 5: Buf = Five & Hundred: Flag = True
      Case 6: Buf = Six & Hundred: Flag = True
      Case 7: Buf = Seven & Hundred: Flag = True
      Case 8: Buf = Eight & Hundred: Flag = True
      Case 9: Buf = Nine & Hundred: Flag = True
      End Select

      If (Flag False) Then N = N Mod 100
      If (N > 0) Then
      If (Flag False) Then Buf = Buf & " "
      Else
      NumToWordDigitGroup = Buf
      Exit Function
      End If

      Select Case (N \ 10)
      Case 0, 1: Flag = False
      Case 2: Buf = Buf & "twenty": Flag = True
      Case 3: Buf = Buf & "thirty": Flag = True
      Case 4: Buf = Buf & "forty": Flag = True
      Case 5: Buf = Buf & "fifty": Flag = True
      Case 6: Buf = Buf & "sixty": Flag = True
      Case 7: Buf = Buf & "seventy": Flag = True
      Case 8: Buf = Buf & "eighty": Flag = True
      Case 9: Buf = Buf & "ninety": Flag = True
      End Select

      If (Flag False) Then N = N Mod 10
      If (N > 0) Then
      If (Flag False) Then Buf = Buf & "-"
      Else
      NumToWordDigitGroup = Buf
      Exit Function
      End If

      Select Case (N)
      Case 0:
      Case 1: Buf = Buf & One
      Case 2: Buf = Buf & Two
      Case 3: Buf = Buf & Three
      Case 4: Buf = Buf & Four
      Case 5: Buf = Buf & Five
      Case 6: Buf = Buf & Six
      Case 7: Buf = Buf & Seven
      Case 8: Buf = Buf & Eight
      Case 9: Buf = Buf & Nine
      Case 10: Buf = Buf & "ten"
      Case 11: Buf = Buf & "eleven"
      Case 12: Buf = Buf & "twelve"
      Case 13: Buf = Buf & "thirteen"
      Case 14: Buf = Buf & "fourteen"
      Case 15: Buf = Buf & "fifteen"
      Case 16: Buf = Buf & "sixteen"
      Case 17: Buf = Buf & "seventeen"
      Case 18: Buf = Buf & "eighteen"
      Case 19: Buf = Buf & "nineteen"
      End Select

      NumToWordDigitGroup = Buf

      End Function

  36. Hello

    I want convert to Quantity PCS example : one hundred and ten pcs only.

    but i don't know how to write down code

  37. How to convert the 1,234 into One Thousand two hundred and thirty four

  38. Thank you everyone who made and updated this code. I appreciate it very much.

    There was a small glitch if the ones digit was a zero, where $820.00 would read "Eight hundred Twenty and No Cents" (two spaces between "Twenty" and "and"). I remedied this by removing the space in front of Thousand, Million, Billion, Trillion, as well as the statements for cents, and Hundred. Then I added a space to the end of Ten through Nineteen, and Twenty through Ninety in GetTens, and One through Nine in GetDigit.

    I am trying to come up with a means to hyphenate a two-digit number like 32 (Thirty-Two) while also leaving off the hyphen from two-digit number ending in 0 like 50 (Fifty). Any suggestions are welcome.

  39. SIR HOW CUT AND PAST THIS FUNCTION IN EXCEL SPREAD SHEET

  40. Here are the cordings for Rupee Values

    Option Explicit
    'Main Function
    Function SpellNumber(ByVal MyNumber)
    Dim Rupees, 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 Rupee 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 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 Rupee"
    Case Else
    Rupees = Rupees & " Rupees"
    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 = Rupees & 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

  41. does anyone here know how to program this:

    Php9,876,543.10

    Nine Million Eight Hundred Seventy-Six Thousand Five Hundred Forty-Three Pesos and 10/100

    How to format this?

  42. What if I only wanted dollar not the cents.

  43. How to convert lakhs into words

  44. Why i can't get the right word

    For example 760.75

    Ringgit Malaysia seventy six thousand seventy five only

    But if no cents, the word is right

    Can u help me

  45. Why i can't get the right word

    For example 760.75

    Ringgit Malaysia seventy six thousand seventy five only

    Can u help me

  46. i wont to convert amount in block letters. how to do it

    • Malinda:
      If the "block letters" are text the answer is the VBA code above or a third party tool. If the letters are not text, but a picture or something else, you'll have to type them as text.

  47. if required "27605.02" to Twenty Seven Thousand Six Hundred and Five and 02/100?

    • ICE LEE:
      The VBA code is in the article above or you need a third party tool.

  48. Can i get rid of the dollar / dollars word?

    example: 6,130.20 = Six Thousand One Hundred Thirty and Twenty Cents

  49. CAN I HAVE A CODE THAT CONVERTS 11 TO ONE ONE OR 22 TO TWO TWO?

    • The VBA code is in the article above.

    • Joseph:
      The VBA code is in the article above or you need a third party tool.

  50. Some errors in that code for me, I've fixed and changed to UK Pounds, also added "and" between the thousand and the hundreds, and a comma.

    Option Explicit
    'Main Function
    Function SpellNumber(ByVal MyNumber)
    Dim Pounds, Pence, 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 Pence and set MyNumber to Pounds amount.
    If DecimalPlace > 0 Then
    MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
    End If
    Count = 1
    Do While MyNumber ""
    Temp = GetHundreds(Right(MyNumber, 3))
    If Temp "" Then Pounds = Temp & Place(Count) & Pounds
    If Len(MyNumber) > 3 Then
    MyNumber = Left(MyNumber, Len(MyNumber) - 3)
    Else
    MyNumber = ""
    End If
    Count = Count + 1
    Loop
    Select Case Pounds
    Case ""
    Pounds = "No Pounds"
    Case "One"
    Pounds = "One Pound"
    Case Else
    Pounds = Pounds & " Pounds"
    End Select
    SpellNumber = Pounds
    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 and "
    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

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