Skip to main content
Home
Live to Learn!

Main navigation

  • Home
  • Learn
    • FoxPro
    • MS-DOS
    • C PRG
    • Java
    • ASP
    • Ruby on Rails
    • ASP.NET
    • E-Books
    • Exam Preparation
    • Tools
  • Blog
  • Forums
  • Contact
User account menu
  • Log in

Breadcrumb

  1. Home
  2. Blog

Convert Currency in Number to Words (Indian Rupees) - MS Excel

By Karthikeyan , 17 May, 2014

Cheques, invoices, bills, receipts are needs to have the currency format both in Numerical and words. The below script can be used in Microsoft Excel / Word / Access or any VBA program supported applications to convert the currency in number format to words (English). 

The below script adds 'and' joining word if it has paise (decimal part), otherwise if you want to have 'and' before 10s or 100s please check the following link for the version 2 of this script

Convert Currency in Number to Words (Indian Rupees) - Version 2


Function ConvertCurrencyToEnglish(ByVal MyNumber)
' Edited by Karthikeyan [email protected]
  Dim Temp
         Dim Rupees, Paise
         Dim DecimalPlace, Count
 
         ReDim Place(9) As String
         Place(2) = " Thousand "
         Place(3) = " lakh "
         Place(4) = " Crore "
 
 
         ' Convert MyNumber to a string, trimming extra spaces.
         MyNumber = Trim(Str(MyNumber))
 
         ' Find decimal place.
         DecimalPlace = InStr(MyNumber, ".")
 
         ' If we find decimal place...
         If DecimalPlace > 0 Then
            ' Convert Paise
            Temp = Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2)
            ' Hi! Note the above line Mid function it gives right portion
            ' after the decimal point
            'if only . and no numbers such as 789. accures, mid returns nothing
            ' to avoid error we added 00
            ' Left function gives only left portion of the string with specified places here 2
 
 
            Paise = ConvertTens(Temp)
 
 
            ' Strip off paise from remainder to convert.
            MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
         End If
 
         Count = 1
        If MyNumber <> "" Then
 
            ' Convert last 3 digits of MyNumber to Indian Rupees.
            Temp = ConvertHundreds(Right(MyNumber, 3))
 
            If Temp <> "" Then Rupees = Temp & Place(Count) & Rupees
 
            If Len(MyNumber) > 3 Then
               ' Remove last 3 converted digits from MyNumber.
               MyNumber = Left(MyNumber, Len(MyNumber) - 3)
            Else
               MyNumber = ""
            End If
 
        End If
 
            ' convert last two digits to of mynumber
            Count = 2
 
            Do While MyNumber <> ""
            Temp = ConvertTens(Right("0" & MyNumber, 2))
 
            If Temp <> "" Then Rupees = Temp & Place(Count) & Rupees
            If Len(MyNumber) > 2 Then
               ' Remove last 2 converted digits from MyNumber.
               MyNumber = Left(MyNumber, Len(MyNumber) - 2)
 
            Else
               MyNumber = ""
            End If
            Count = Count + 1
 
            Loop
 
 
 
 
         ' Clean up rupees.
         Select Case Rupees
            Case ""
               Rupees = ""
            Case "One"
               Rupees = "Rupee One"
            Case Else
               Rupees = "Rupees " & Rupees
         End Select
 
         ' Clean up paise.
         Select Case Paise
            Case ""
               Paise = ""
            Case "One"
               Paise = "One Paise"
            Case Else
               Paise = Paise & " Paise"
         End Select
         
         If Rupees = "" Then
         ConvertCurrencyToEnglish = Paise & " Only"
         ElseIf Paise = "" Then
         ConvertCurrencyToEnglish = Rupees & " Only"
         Else
         ConvertCurrencyToEnglish = Rupees & " and " & Paise & " Only"
         End If
         
End Function
 
 
Private Function ConvertDigit(ByVal MyDigit)
        Select Case Val(MyDigit)
            Case 1: ConvertDigit = "One"
            Case 2: ConvertDigit = "Two"
            Case 3: ConvertDigit = "Three"
            Case 4: ConvertDigit = "Four"
            Case 5: ConvertDigit = "Five"
            Case 6: ConvertDigit = "Six"
            Case 7: ConvertDigit = "Seven"
            Case 8: ConvertDigit = "Eight"
            Case 9: ConvertDigit = "Nine"
            Case Else: ConvertDigit = ""
         End Select
 
End Function
 
Private Function ConvertHundreds(ByVal MyNumber)
    Dim Result As String
 
         ' Exit if there is nothing to convert.
         If Val(MyNumber) = 0 Then Exit Function
 
         ' Append leading zeros to number.
         MyNumber = Right("000" & MyNumber, 3)
 
         ' Do we have a hundreds place digit to convert?
         If Left(MyNumber, 1) <> "0" Then
            Result = ConvertDigit(Left(MyNumber, 1)) & " Hundred "
         End If
 
         ' Do we have a tens place digit to convert?
         If Mid(MyNumber, 2, 1) <> "0" Then
            Result = Result & ConvertTens(Mid(MyNumber, 2))
         Else
            ' If not, then convert the ones place digit.
            Result = Result & ConvertDigit(Mid(MyNumber, 3))
         End If
 
         ConvertHundreds = Trim(Result)
End Function
 
 
Private Function ConvertTens(ByVal MyTens)
          Dim Result As String
 
         ' Is value between 10 and 19?
         If Val(Left(MyTens, 1)) = 1 Then
            Select Case Val(MyTens)
               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
            ' .. otherwise it's between 20 and 99.
            Select Case Val(Left(MyTens, 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
 
            ' Convert ones place digit.
            Result = Result & ConvertDigit(Right(MyTens, 1))
         End If
 
         ConvertTens = Result
End Function


Download this

How to use this code?

 

  • Click on Developer Tab in MS office (Word / Excel / Access). If Developer Tab not appears, click here to know the way to enable this. 
  • Click Visual Basic, then VBA application development window will open
  • Now right click in Project pane, insert -> Module

Inserting VBA module in MS Office

  • Now paste the above code and save it as Macro Enabled document. (For excel save with extension .xlsm)
  • Now you can use the formula '=ConvertCurrencyToEnglish()'

Currency in Number to Worlds - Excel

 

 

MS Access & MS Word Implementations

  • Convert Currency in Number to Words - MS Access
  • Convert Currency in Number to Words - MS Word

Online converter

  • Convert Currency in Number to Words - Online
  • Convert Number to Words in English - Online

 

Update 02-03-2017 : Code updated to show 'Rupee/Rupees' as prefix and 'Only' as suffix.

 

How to use video :

Category
How to
Tags
MS Excel
MS Office

Comments50

N Drup (not verified)

3 years 8 months ago

How to go upto 100 Crs? this code has limitations upto 10 cr.

Profile picture for user Karthikeyan

Karthikeyan

4 years 10 months ago

In reply to by kiros (not verified)

Hi, Please check the new version
https://www.livetolearn.in/...

Profile picture for user Karthikeyan

Karthikeyan

4 years 10 months ago

In reply to by stella (not verified)

Please check this version
https://www.livetolearn.in/...

Profile picture for user Karthikeyan

Karthikeyan

4 years 10 months ago

In reply to by stella (not verified)

Hi, please check this version
https://www.livetolearn.in/...

Profile picture for user Karthikeyan

Karthikeyan

4 years 10 months ago

In reply to by HARSH Mehta (not verified)

Hi, please check the latest version

stella (not verified)

4 years 11 months ago

In reply to by kiros (not verified)

Admin please reply I have same question

stella (not verified)

4 years 11 months ago

In reply to by REHMAN (not verified)

Please say how to add and in middle as above.

stella (not verified)

4 years 11 months ago

What if we want number to be converted in below format.please assist.am trying to modify it but couldn't do.

1750-Rupees One thousand seven hundred and fifty only.
176548-Rupees one lakh seventy six thousand five hundred and forty eight only

79056-Rupees seventy nine thousand and fifty six only.

Need to use it daily but couldn't moidfy the code.please assist.

Profile picture for user Karthikeyan

Karthikeyan

5 years ago

In reply to by Rajesh (not verified)

Give me more information, so I can check it.

Profile picture for user Karthikeyan

Karthikeyan

5 years ago

In reply to by Rajesh (not verified)

Yes, this script will work on all excel versions. But not tested in older versions below 2003.

kiros (not verified)

5 years ago

For this "and", what modification should be done?
eg. 669501 = Six Lakh Sixty Nine Thousand Five Hundred And One Only

sarvesh Maheshwari (not verified)

5 years 3 months ago

What will be this function's google sheet version please update with the same.

Rajesh (not verified)

5 years 4 months ago

In reply to by Karthikeyan

because im trying this its not working im getting error..

Rajesh (not verified)

5 years 4 months ago

In reply to by Karthikeyan

Hai Karthik is this permanent script for all excell.

Profile picture for user admin

admin

5 years 4 months ago

In reply to by cyborg (not verified)

Let me know sample values to check

cyborg (not verified)

5 years 4 months ago

Some times I get a difference of one paise less. How to remove that error?

Parul Sahu (not verified)

5 years 7 months ago

sir, please give the code which could work in visual basic 2010

aCe_vEnTurA2 (not verified)

6 years ago

In reply to by admin

Thanks a million. That helped a lot. You are a star :)

Nories Wilson (not verified)

6 years 3 months ago

Greetings!

Thank you very much brooo i was searching this last three days i got lots of option, but it is pure and good as i need...

Nories Wilson

Chetan (not verified)

6 years 8 months ago

In reply to by Karthikeyan

where to save this file, and I am not able to see the save as option as "default template" Pl help

varinder singh (not verified)

6 years 8 months ago

Thanks team, This code is wonderful and very usefull for me.

Balu (not verified)

6 years 10 months ago

Dear friends, the above code is perfectly working. But I'm facing pronlem with the new files. If i open new Excel work book and try to change the number into words, the function is not displaying. What should I do so that this code works for all the work books?

Profile picture for user Karthikeyan

Karthikeyan

6 years 10 months ago

In reply to by harichand (not verified)

Pls send email to [email protected], I will send the code.

harichand (not verified)

6 years 10 months ago

This is the good job , thanks for this , but is have one problem in this if i don't want rupees in front for that what i should do.
please help me

Profile picture for user Karthikeyan

Karthikeyan

6 years 11 months ago

In reply to by Ritesh (not verified)

You have to save the file as default template to activate it by default.

Ritesh (not verified)

6 years 11 months ago

In reply to by Karthikeyan

i tried saving it .xlsm but it works in the same file not on all new excel files

Abhinav Binkar (not verified)

6 years 11 months ago

In reply to by Karthikeyan

Can you help me with this.
If the value is 0.00 then it should come as "Rupees NIL only".

Sourav Lubana (not verified)

6 years 12 months ago

Hi,, Can you help me in reaching result for the following figures:-
1) Rs 1,00,00,00,000 result in words as Rupees One Hundred Crore Only
2) Rs.1,00,00,00,001 result in words as Rupees One Hundred Crore One Only
3) Rs. 10,00,00,00,000 result in words as Rupees Ten Hundred Crore Only
4) Rs. 10,00,00,00,001 result in words as Rupees Ten Hundred Crore One Only
5) Rs. 19,22,45,67,891 result in words as Rupees Nineteen Hundred TwentyTwo Crore
FortyFive Lakh SixtySeven Thousand Eight Hundred Ninety One Only.

Profile picture for user Karthikeyan

Karthikeyan

6 years 12 months ago

In reply to by Gaurav Gupta (not verified)

Yes, change the number to round figure using formula, before using this convert formula.

Gaurav Gupta (not verified)

6 years 12 months ago

It worked and saved lot of time.
Only issue i want to get resolved is : I do not want digits to be converted after decimal place. What do i have to change in code??? I have changed my digits in round figure. So i do not want decimal places to be shown in words. Kindly help

Profile picture for user admin

admin

7 years ago

In reply to by aCe_vEnTurA2 (not verified)

If you want it as default in all new workbooks, change the Excels default template, for this purpose first you have to save the macro enabled workbook as Excel template. Then, set Excel to start with that template by default. https://support.office.com/...

aCe_vEnTurA2 (not verified)

7 years ago

I am sorry I am new to Excel. I am not able to go ahead of "and save it as Macro Enabled document. (For excel save with extension .xlsm)" Do I have to do this for each and every worksheet I want it in or can I just add it to excel so that it works for whichever sheet I open. Also I do not see any option of "save as" in the module. So how can I save it as .xlsm ?

Profile picture for user admin

admin

7 years 1 month ago

In reply to by Shufa S (not verified)

[email protected]

Shufa S (not verified)

7 years 1 month ago

In reply to by admin

Where do I send this? Please give me your email address

Profile picture for user admin

admin

7 years 1 month ago

In reply to by Shufa S (not verified)

Pls send me the file with sample data.

Shufa S (not verified)

7 years 1 month ago

I am getting this error #NAME?
I have saved the file in .xlsm as suggested.

Profile picture for user admin

admin

7 years 1 month ago

In reply to by gudapati nages… (not verified)

1) Try saving the file in local instead of network.
2) Save as Macrol enabled workbook (.xlsm)
3) Create a new excel file and try the above 2 steps after adding the conversion code.

gudapati nages… (not verified)

7 years 1 month ago

In reply to by admin

PREVIOUS SAVED FILES ALSO NOT OPEN SIR

Profile picture for user admin

admin

7 years 1 month ago

In reply to by mohammed faisal (not verified)

Save the file as Macro enabled workbook (.xlsm)

Profile picture for user admin

admin

7 years 1 month ago

In reply to by gudapati nages… (not verified)

Did you save the file with .xlsm format? Save the file as Macro enabled workbook (.xlsm).

Kamal Bharakhda (not verified)

7 years 1 month ago

Admin, does this code works in Early Binding and Late Binding?

gudapati nages… (not verified)

7 years 1 month ago

In reply to by gudapati nages… (not verified)

SIR,
AWAITING FOR YOUR REPLY SIR

gudapati nages… (not verified)

7 years 1 month ago

https://uploads.disquscdn.c... GOOD MORNING SIR,
MY PROBLEM IS WHEN I OPEN EXCEL SHEET IT SHOWN ERROR POP PLEASE SOLVE THIS PROBLEM.

mohammed faisal (not verified)

7 years 2 months ago

if i close the xcel file the module which i have created vanishes...need Assistance..

saravanan (not verified)

7 years 2 months ago

Dear sir, the above converter is perfectly working, but while i close and open the file i got this error message
#NAME
Please help me

Bikas (not verified)

7 years 3 months ago

In reply to by Kalyan Babu C (not verified)

Can you help me?

Rohit Kulshreshtha (not verified)

7 years 3 months ago

Wow... this is amazing..thank you very much

Aditya Naman Singh (not verified)

7 years 4 months ago

sir if i want of one trillion ??? please help

Deepak (not verified)

7 years 4 months ago

Worked very well. Thank you.

Profile picture for user Karthikeyan

Karthikeyan

7 years 4 months ago

In reply to by Imran Habib (not verified)

Please save the file with .xlsm extension (Macro-enabled workbook)

Pagination

  • Page 1
  • Page 2
  • Page 3
  • Page 4
  • Next page
  • Last page
  • Add new comment

Featured Blog Posts

Convert Currency in Number to Words (Indian Rupees) - MS Excel
Foxpro Tutorial and Programs
Convert Currency in Number to Words in MS Word
Convert Currency in Number to Words (Indian Rupees) - Version 2
Best way to Use Rupee Symbol in Windows – Easy steps
Convert Currency in Number to Words - MS Access
Creating All in One Windows XP DVD with all Important Applications
RSS feed

© 2009-2025 Live to Learn.In

Terms of Use | Privacy Policy