# 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

Example:

 1e+09 Rupees One Hundred Crores 345.56 Rupees Three Hundred Fourty Five and Fifty Six paise only 1.23123e+07 Rupees One Crore Twenty Three Lacs Twelve Thousand Three Hundred Twelve 1e+09 Rupees Ninty Nine Crores Ninty Nine Lacs Ninty Nine Thousand Nine Hundred Ninty Nine 1e+10 Rupees Nine Hundred Ninty Nine Crores Ninty Nine Lacs Ninty Nine Thousand Nine Hundred Ninty Nine 1212.34 Rupees One Thousand Two Hundred Twelve and Thirty Four paise only 2.32311e+07 Rupees 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:

Convert Number to Words

### 45 Responses

1. arun says:

Its superb. As i am in project management it helps me a lot.

Thank u

• sumitjain says:

You r very welcome arun 🙂

2. atul jahagirdar says:

Dear Sumit,

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

3. sumitjain says:

@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 😉

4. Rashed says:

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

• Sumit Jain says:

Updated till 999 Crores…

Sumit

5. Vishav says:

Need This Function Till 1000 crores, Thanks ….

• Sumit Jain says:

Updated till 999 Crores…

Sumit

6. ashish mehra says:

If you want to know more about “Convert Number To Words In Indian Format”, check this link ……..

http://www.exceltip.com/tips/convert-number-to-words-in-indian-format-in-microsoft-excel-2010-2013.html

7. Akhilesh says:

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.

It helped me a lot and saved time thank you very much

• Sumit Jain says:

Good to know that its useful.
Thanks for using.

Sumit

9. Zaib says:

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.

• Sumit Jain says:

Apologies for the late response. The post has been updated for decimal values as well.

Thanks
Sumit Jain

10. Omar says:

Numbers with decimal points do not seem to work.

• Sumit Jain says:

The post has been updated for decimal values as well.

Thanks
Sumit Jain

• Ramlal Singh says:

You worked hard, but in your formula 0.80 converting
that =
” Rupees and Eight paise ‘ whereas it should be
” Rupees Zero and Eighty paise”
As such needs few amendments

• SJ says:

Thanks Ram for finding the defect, will correct it soon. 🙂

11. SUM0N @HM3D says:

How to convert “123 = একশত তেইশ টাকা” in excel 2003/2007.
Send me Code.

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

Wait for your info…….

12. krishna says:

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,

• SJ says:

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.

• krishna says:

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

13. krishna says:

And one more thing. It calculates from the column which is having formula.

14. krishna says:

if you want i will share my excel

15. Paras Sugandh says:

My VBA Code didnt come fully. Where can i share it.. Thanks

16. Gowri says:

Wonderful.. Thanks much!!

• SJ says:

You are welcome, glad to know that it was helpful.

17. rajesh says:

set ur decimal upto three points u will get the answer for 65 insteat of 66 paise. check ur format cell please

18. Amit Mazumdar says:

Thanks a lot sumit really appreciate you work…..

19. Shahid says:

hello sir,
can you please send me a video clip odf all this method?
it’ll be so nice of you.

• SJ says:

which video clip you are talking about, please elaborate your question

20. Prashant Lenka says:

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”

• Prashant Lenka says:

Only number to word convert please any one guide me.

• SJ says:

can u provide an example of what you are looking for?

• SJ says:

its very simple, you can modify the existing code to work for higher numbers.

21. Muhammed says:

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

• SJ says:

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

22. yogesh says:

i have both of ruppy and doller plz answer

23. Kaushal mishra says:

Its not converting paise in multiple of tens. e.g. 10 paise, 20 paise and so on, please suggest

• SJ says:

Thanks Kaushal for finding it out, I have fixed it. Now It would work properly.

1. June 17, 2016

[…] document.write(''); abinkar, Here are two for a start: https://www.livetolearn.in/site/blog…-indian-rupees VBA-Excel: Convert Numbers (Rupees) into Words OR Text […]