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

To Con­vert Num­bers into Text, please fol­low the steps below

Exam­ple:

 1e+09 Rupees One Hun­dred Crores 345.56 Rupees Three Hun­dred Fourty Five and Fifty Six paise only 1.23123e+07 Rupees One Crore Twenty Three Lacs Twelve Thou­sand Three Hun­dred Twelve 1e+09 Rupees Ninty Nine Crores Ninty Nine Lacs Ninty Nine Thou­sand Nine Hun­dred Ninty Nine 1e+10 Rupees Nine Hun­dred Ninty Nine Crores Ninty Nine Lacs Ninty Nine Thou­sand Nine Hun­dred Ninty Nine 1212.34 Rupees One Thou­sand Two Hun­dred Twelve and Thirty Four paise only 2.32311e+07 Rupees Two Crore Thirty Two Lacs Thirty One Thou­sand One Hun­dred Eleven

Steps:

• Open a new WorkBook
• Cre­ate a Button
• Copy Paste the Com­plete Code
• Assign the macro to the but­ton created
• Write the Num­ber in Col­umn A
• Click the Con­vert button
• You will find the text of num­ber in col­umn B

Com­plete Code:

Con­vert Num­ber to Words

### 45 Responses

1. arun says:

Its superb. As i am in project man­age­ment it helps me a lot.

Thank u

• sumitjain says:

You r very wel­come arun 🙂

2. atul jahagirdar says:

Dear Sumit,

3. sumitjain says:

@Atul ..instead of that u can just down­load the excel from the link pro­vided at the begin­ning and start using it.

Pls trou­ble me again for any fur­ther queries 😉

4. Rashed says:

It helped me a lot. please pro­vide me the code for num­bers up to 13 dig­its and prefer­ably up to 15 dig­its (whole numbers).

• Sumit Jain says:

Updated till 999 Crores…

Sumit

5. Vishav says:

Need This Func­tion Till 1000 crores, Thanks .…

• Sumit Jain says:

Updated till 999 Crores…

Sumit

6. ashish mehra says:

If you want to know more about “Con­vert Num­ber To Words In Indian For­mat”, 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, oth­er­wise I always get for­eign­ers.
By the way,
I want to lock some of cells in all worksheet(including adding new work­sheet) within a work­book, and donot select locked cell.

What code should be and where type code i.e in mod­ule or at workbook.

Exam­ple:
Lock cell (A1:C2) and (D2:F4) and (B1:B12) in work­sheet as well as adding new work­sheet with­ing a workbook.

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

• Sumit Jain says:

Good to know that its use­ful.
Thanks for using.

Sumit

9. Zaib says:

Hi Sumit,
Many thanks for your code. It really helps me a lot. The only prob­lem is that it doesn’t han­dle the part after dec­i­mals, so I can’t con­vert paise to words, e.g. 123.45 = Rupees One Hun­dred Twenty Three And Paise Forty Five Only.
Can you kindly mod­ify the code to reflect the same? I am a noob with VB. I’ll be really grate­ful.
Regards,
Zaib.

• Sumit Jain says:

Apolo­gies for the late response. The post has been updated for dec­i­mal val­ues as well.

Thanks
Sumit Jain

10. Omar says:

Num­bers with dec­i­mal points do not seem to work.

• Sumit Jain says:

The post has been updated for dec­i­mal val­ues as well.

Thanks
Sumit Jain

• Ramlal Singh says:

You worked hard, but in your for­mula 0.80 con­vert­ing
that =
” Rupees and Eight paise ’ whereas it should be
” Rupees Zero and Eighty paise“
As such needs few amendments

• SJ says:

Thanks Ram for find­ing the defect, will cor­rect it soon. 🙂

11. SUM0N @HM3D says:

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

Con­tract @ 01722–844142.
Mail: [email protected]

Wait for your info.……

12. krishna says:

Hi,

I have used sim­i­lar code in my excel. the only issue is for exam­ple 6762.66 it reads incor­rectly as as “Rupees Six Thou­sand Seven Hun­dred 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 Thou­sand Seven Hun­dred 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

Func­tion SpellCurr(ByVal MyNum­ber, _
Optional MyCur­rency As String = “Rupee”, _
Optional MyCur­ren­cy­Place As String = “P”, _
Optional MyCur­ren­cy­Dec­i­mals As String = “Paisa”, _
Optional MyCur­ren­cy­Dec­i­mal­sPlace As String = “S”)

*****************************************************************************************************************
’* Based on Spell­Num­bers UDF by Microsoft, Which han­dles only Dol­lars as cur­rency *
’* UDF mod­fied by Yogesh Gupta, [email protected], Ygblogs.blogspot.com on July 21, 2009 *
’* UDF mod­i­fied on Sep­tem­ber 04, 2009 to make cur­rency inputs optional, by default it will use Indian Cur­rency *
’* This mod­i­fied UDF can be used for any cur­rency in case you pro­vide for cur­rency inputs *
’* User can define the Pre­fix and Sufix place for Cur­rency and Cur­ren­cy­Dec­i­mals *
’* MyNum­ber = Numeric Value you need to con­vert into words *
’* MyCur­rency = Name of your Cur­rency — i.e. Dol­lar for USA *
’* MyCur­ren­cy­Place = Pre­fix or Suf­fix the cur­rency, use “P” for Pre­fix and “S” for Suf­fix *
’* MyCur­ren­cy­Dec­i­mals = Name of your Cur­rency Dec­i­mals — i.e. Cent for USA *
’* MyCur­ren­cy­Dec­i­mal­sPlace = Pre­fix or Suf­fix the cur­rency dec­i­mals, use “P” for Pre­fix and “S” for Suf­fix *
’*****************************************************************************************************************

Dim Rupees, Paisa, Temp
Dim Dec­i­malPlace, Count

ReDim Place(9) As String
Place(2) = ” Thou­sand “
Place(3) = ” Mil­lion “
Place(4) = ” Bil­lion “
Place(5) = ” Trillion ”

‘String rep­re­sen­ta­tion of amount.
MyNum­ber = Trim(Str(MyNumber))

‘Posi­tion of dec­i­mal place 0 if none.
Dec­i­malPlace = InStr(MyNumber, “.”)

’ Con­vert Paisa and set MyNum­ber to Rupee amount.
If Dec­i­malPlace > 0 Then
Paisa = GetTens(Left(Mid(MyNumber, Dec­i­malPlace + 1) & _
“00”, 2))
MyNum­ber = Trim(Left(MyNumber, Dec­i­malPlace — 1))
End If

Count = 1

Do While MyNum­ber ““
Temp = GetHundreds(Right(MyNumber, 3))
If Temp “” Then Rupees = Temp & Place(Count) & Rupees
If Len(MyNumber) > 3 Then
MyNum­ber = Left(MyNumber, Len(MyNumber) — 3)
Else
MyNum­ber = ““
End If
Count = Count + 1

Loop

If MyCur­ren­cy­Place = “P” Then
Select Case Rupees
Case ““
Rupees = MyCur­rency & “s” & ” Zero“
Case “One“
Rupees = MyCur­rency & ” One“
Case Else
Rupees = MyCur­rency & “s ” & Rupees
End Select
Else
Select Case Rupees
Case ““
Rupees = “Zero ” & MyCur­rency & “s“
Case “One“
Rupees = “One ” & MyCur­rency
Case Else
Rupees = Rupees & ” ” & MyCur­rency & “s“
End Select
End If

If MyCur­ren­cy­Dec­i­mal­sPlace = “S” Then
Select Case Paisa
Case ““
Paisa = ” Only“
Case “One“
Paisa = ” and One ” & MyCur­ren­cy­Dec­i­mals & ” Only“
Case Else
Paisa = ” and ” & Paisa & ” ” & MyCur­ren­cy­Dec­i­mals & “s Only“
End Select
Else
Select Case Paisa
Case ““
Paisa = ” Only“
Case “One“
Paisa = ” and ” & MyCur­ren­cy­Dec­i­mals & ” One ” & ” Only“
Case Else
Paisa = ” and ” & MyCur­ren­cy­Dec­i­mals & “s ” & Paisa & ” Only“
End Select
End If

Spell­Curr = Rupees & Paisa

End Function

‘*******************************************
’ Con­verts a num­ber from 100–999 into text *
‘*******************************************

Func­tion GetHundreds(ByVal MyNum­ber)
Dim Result As String
If Val(MyNumber) = 0 Then Exit Func­tion
MyNum­ber = Right(“000” & MyNum­ber, 3)
’ Con­vert the hun­dreds place.
If Mid(MyNumber, 1, 1) “0” Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & ” Hun­dred “
End If

’ Con­vert 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
GetH­un­dreds = Result
End Function

‘*********************************************
’ Con­verts a num­ber from 10 to 99 into text. *
‘*********************************************
Func­tion GetTens(TensText)

Dim Result As String
Result = “” ’ Null out the tem­po­rary func­tion 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 = “Thir­teen“
Case 14: Result = “Four­teen“
Case 15: Result = “Fif­teen“
Case 16: Result = “Six­teen“
Case 17: Result = “Sev­en­teen“
Case 18: Result = “Eigh­teen“
Case 19: Result = “Nine­teen“
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 = “Sev­enty “
Case 8: Result = “Eighty “
Case 9: Result = “Ninety “
Case Else
End Select

Result = Result & Get­Digit _
(Right(TensText, 1)) ’ Retrieve ones place.
End If
Get­Tens = Result
End Function

‘*******************************************
’ Con­verts a num­ber from 1 to 9 into text. *
‘*******************************************

Func­tion GetDigit(Digit)
Select Case Val(Digit)
Case 1: Get­Digit = “One“
Case 2: Get­Digit = “Two“
Case 3: Get­Digit = “Three“
Case 4: Get­Digit = “Four“
Case 5: Get­Digit = “Five“
Case 6: Get­Digit = “Six“
Case 7: Get­Digit = “Seven“
Case 8: Get­Digit = “Eight“
Case 9: Get­Digit = “Nine“
Case Else: Get­Digit = ““
End Select
End Function

13. krishna says:

And one more thing. It cal­cu­lates from the col­umn which is hav­ing 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:

Won­der­ful.. Thanks much!!

• SJ says:

17. rajesh says:

set ur dec­i­mal upto three points u will get the answer for 65 insteat of 66 paise. check ur for­mat cell please

18. Amit Mazumdar says:

Thanks a lot sumit really appre­ci­ate 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:

20. Prashant Lenka says:

How to Indian num­ber con­vert to word up to 17 digit number?

How to Indian num­ber con­vert to word up to 17 digit num­ber in excel sheet?

10000000: Result = ” Crore “
100000000: Result = “Ten Crores “
1000000000: Result = “One Hun­dred Crores“
10000000000: Result = “One Thou­sand Crores“
100000000000: Result = “Ten Thou­sand Crores“
1000000000000: Result = “One Lakh Crores“
10000000000000: Result = “Ten Lakh Crores“
100000000000000: Result = “One Hun­dred Lakh Crores“
1000000000000000: Result = “One Thou­sand Lakh Crores“
10000000000000000: Result = “Ten Thou­sand Lakh Crores”

• Prashant Lenka says:

Only num­ber to word con­vert please any one guide me.

• SJ says:

can u pro­vide an exam­ple of what you are look­ing for?

• SJ says:

its very sim­ple, you can mod­ify the exist­ing code to work for higher numbers.

21. Muhammed says:

Hi

You solve my prob­lem upto an extend . Thanks a lot for that.
Is it pos­si­ble to con­vert three dig­its after dec­i­mals as I am liv­ing in Bahrain and here we are using three digit after dec­i­mal.
Exam­ple
100.101 One Hun­dred Bahraini Dinar and Hun­dred and One fils

• SJ says:

yes, we need to make some sim­ple changes in the code to do that, let me know if u need pass­word for to make these changes or u need any help in mak­ing changes

22. yogesh says:

i have both of ruppy and doller plz answer

23. Kaushal mishra says:

Its not con­vert­ing paise in mul­ti­ple of tens. e.g. 10 paise, 20 paise and so on, please suggest

• SJ says:

Thanks Kaushal for find­ing 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: Con­vert Num­bers (Rupees) into Words OR Text […]