VBA-Excel: Convert Numbers (Rupees) into Words OR Text – Updated Till 1000000 Crore With Decimal Numbers

To Convert Numbers into Text, please follow the steps below

Download Link: NumberToWords
Example:

1000000000.00Rupees One Hundred Crores
345.56Rupees Three Hundred Fourty Five and Fifty Six paise only
12312312.00Rupees One Crore Twenty Three Lacs Twelve Thousand Three Hundred Twelve
999999999.00Rupees Ninty Nine Crores Ninty Nine Lacs Ninty Nine Thousand Nine Hundred Ninty Nine
9999999999.00Rupees Nine Hundred Ninty Nine Crores Ninty Nine Lacs Ninty Nine Thousand Nine Hundred Ninty Nine
1212.34Rupees One Thousand Two Hundred Twelve and Thirty Four paise only
23231111.00Rupees Two Crore Thirty Two Lacs Thirty One Thousand One Hundred Eleven

 Steps:

  • Open a new WorkBook
  • Create a Button
  • Copy Paste the Complete Code
  • Assign the macro to the button created
  • Write the Number in Column A
  • Click the Convert button
  • You will find the text of number in column B

Complete Code:

Download Link : NumberToWords

Convert Number to Words
Convert Number to Words

 

45 thoughts on “VBA-Excel: Convert Numbers (Rupees) into Words OR Text – Updated Till 1000000 Crore With Decimal Numbers”

  1. Dear Sumit,

    Pleas advice how can work in excel,EG i added the code in vb afterthat how can use in excel.Please advice

    Reply
  2. @Atul ..instead of that u can just download the excel from the link provided at the beginning and start using it.

    Pls trouble me again for any further queries 😉

    Reply
  3. It helped me a lot. please provide me the code for numbers up to 13 digits and preferably up to 15 digits (whole numbers).

    Reply
  4. Hi Mr. Sumit,

    Nice to see a Indian Excel expert, otherwise I always get foreigners.
    By the way,
    I want to lock some of cells in all worksheet(including adding new worksheet) within a workbook, and donot select locked cell.

    What code should be and where type code i.e in module or at workbook.

    Example:
    Lock cell (A1:C2) and (D2:F4) and (B1:B12) in worksheet as well as adding new worksheet withing a workbook.

    Reply
  5. Hi Sumit,
    Many thanks for your code. It really helps me a lot. The only problem is that it doesn’t handle the part after decimals, so I can’t convert paise to words, e.g. 123.45 = Rupees One Hundred Twenty Three And Paise Forty Five Only.
    Can you kindly modify the code to reflect the same? I am a noob with VB. I’ll be really grateful.
    Regards,
    Zaib.

    Reply
  6. How to convert “123 = একশত তেইশ টাকা” in excel 2003/2007.
    Please help me if anybody can…
    Send me Code.

    Contract @ 01722-844142.
    Mail: [email protected]

    Wait for your info…….

    Reply
  7. Hi,

    I have used similar code in my excel. the only issue is for example 6762.66 it reads incorrectly as as “Rupees Six Thousand Seven Hundred Sixty Two and Sixty Five Paisas Only” please help me on this. instead of Sixty six , it reads as “sixty five”

    Regards,
    Krishnaprasad PB

    Reply
    • The excel i have shared shows “Rupees Six Thousand Seven Hundred Sixty Two and Sixty Six paise only”, can you share the code you r using so that i can take a look.

      Reply
      • this is the code I am using taken from http://www.yogeshguptaonline.com/2009/07/excel-functions-convert-numbers-into.html?showComment=1442926469103#c6313997018215034694

        Function SpellCurr(ByVal MyNumber, _
        Optional MyCurrency As String = “Rupee”, _
        Optional MyCurrencyPlace As String = “P”, _
        Optional MyCurrencyDecimals As String = “Paisa”, _
        Optional MyCurrencyDecimalsPlace As String = “S”)

        ‘*****************************************************************************************************************
        ‘* Based on SpellNumbers UDF by Microsoft, Which handles only Dollars as currency *
        ‘* UDF modfied by Yogesh Gupta, [email protected], Ygblogs.blogspot.com on July 21, 2009 *
        ‘* UDF modified on September 04, 2009 to make currency inputs optional, by default it will use Indian Currency *
        ‘* This modified UDF can be used for any currency in case you provide for currency inputs *
        ‘* User can define the Prefix and Sufix place for Currency and CurrencyDecimals *
        ‘* MyNumber = Numeric Value you need to convert into words *
        ‘* MyCurrency = Name of your Currency – i.e. Dollar for USA *
        ‘* MyCurrencyPlace = Prefix or Suffix the currency, use “P” for Prefix and “S” for Suffix *
        ‘* MyCurrencyDecimals = Name of your Currency Decimals – i.e. Cent for USA *
        ‘* MyCurrencyDecimalsPlace = Prefix or Suffix the currency decimals, use “P” for Prefix and “S” for Suffix *
        ‘*****************************************************************************************************************

        Dim Rupees, Paisa, 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 Paisa and set MyNumber to Rupee amount.
        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

        If MyCurrencyPlace = “P” Then
        Select Case Rupees
        Case “”
        Rupees = MyCurrency & “s” & ” Zero”
        Case “One”
        Rupees = MyCurrency & ” One”
        Case Else
        Rupees = MyCurrency & “s ” & Rupees
        End Select
        Else
        Select Case Rupees
        Case “”
        Rupees = “Zero ” & MyCurrency & “s”
        Case “One”
        Rupees = “One ” & MyCurrency
        Case Else
        Rupees = Rupees & ” ” & MyCurrency & “s”
        End Select
        End If

        If MyCurrencyDecimalsPlace = “S” Then
        Select Case Paisa
        Case “”
        Paisa = ” Only”
        Case “One”
        Paisa = ” and One ” & MyCurrencyDecimals & ” Only”
        Case Else
        Paisa = ” and ” & Paisa & ” ” & MyCurrencyDecimals & “s Only”
        End Select
        Else
        Select Case Paisa
        Case “”
        Paisa = ” Only”
        Case “One”
        Paisa = ” and ” & MyCurrencyDecimals & ” One ” & ” Only”
        Case Else
        Paisa = ” and ” & MyCurrencyDecimals & “s ” & Paisa & ” Only”
        End Select
        End If

        SpellCurr = Rupees & Paisa

        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

        Reply
  8. How to Indian number convert to word up to 17 digit number?

    How to Indian number convert to word up to 17 digit number in excel sheet?

    10000000: Result = ” Crore ”
    100000000: Result = “Ten Crores ”
    1000000000: Result = “One Hundred Crores”
    10000000000: Result = “One Thousand Crores”
    100000000000: Result = “Ten Thousand Crores”
    1000000000000: Result = “One Lakh Crores”
    10000000000000: Result = “Ten Lakh Crores”
    100000000000000: Result = “One Hundred Lakh Crores”
    1000000000000000: Result = “One Thousand Lakh Crores”
    10000000000000000: Result = “Ten Thousand Lakh Crores”

    Reply
  9. Hi

    You solve my problem upto an extend . Thanks a lot for that.
    Is it possible to convert three digits after decimals as I am living in Bahrain and here we are using three digit after decimal.
    Example
    100.101 One Hundred Bahraini Dinar and Hundred and One fils

    Reply
    • yes, we need to make some simple changes in the code to do that, let me know if u need password for to make these changes or u need any help in making changes

      Reply

Leave a Comment