How to convert Numbers to Words in Indian Currency Format

How to convert Numbers to Words in Indian Currency Format

There are almost 200+ similar requests from our page followers to how to convert numbers to words, below given code will suit to all the queries at the best. Hope this helps.

How to create the function Called SpellNumber()
1) Start Microsoft Excel.
2) Press ALT+F11 to start the Visual Basic Editor.
3) On the Insert menu, click Module.
4) Copy the following code into the module sheet.

Save the file as Excel 97-2003 (XLS) or Excel Macro Enabled (XLSM) Workboook, otherwise you will lose the macro. [Enclosed sample file at bottom]

How to convert Numbers to Words in Indian Currency Format

'================================
 'Code
 '================================
 Function SpellNumber(ByVal MyNumber, Optional incRupees As Boolean = True)
 Dim Crores, Lakhs, Rupees, Paise, Temp
 Dim DecimalPlace As Long, Count As Long
 Dim myLakhs, myCrores
 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 Paise and set MyNumber to Rupees amount.
 If DecimalPlace > 0 Then
 Paise = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
 MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
 End If
myCrores = MyNumber  10000000
 myLakhs = (MyNumber - myCrores * 10000000)  100000
 MyNumber = MyNumber - myCrores * 10000000 - myLakhs * 100000
 Count = 1
 Do While myCrores <> ""
 Temp = GetHundreds(Right(myCrores, 3))
 If Temp <> "" Then Crores = Temp & Place(Count) & Crores
 If Len(myCrores) > 3 Then
 myCrores = Left(myCrores, Len(myCrores) - 3)
 Else
 myCrores = ""
 End If
 Count = Count + 1
 Loop
 Count = 1
Do While myLakhs <> ""
 Temp = GetHundreds(Right(myLakhs, 3))
 If Temp <> "" Then Lakhs = Temp & Place(Count) & Lakhs
 If Len(myLakhs) > 3 Then
 myLakhs = Left(myLakhs, Len(myLakhs) - 3)
 Else
 myLakhs = ""
 End If
 Count = Count + 1
 Loop
 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 Crores
 Case "": Crores = ""
 Case "One": Crores = " One Crore "
 Case Else: Crores = Crores & " Crores "
 End Select
Select Case Lakhs
 Case "": Lakhs = ""
 Case "One": Lakhs = " One Lakh "
 Case Else: Lakhs = Lakhs & " Lakhs "
 End Select
 Select Case Rupees
 Case "": Rupees = "Zero "
 Case "One": Rupees = "One "
 Case Else:
Rupees = Rupees
 End Select
 Select Case Paise
 Case "": Paise = ""
 Case "One": Paise = " and One Paise"
 Case Else: Paise = " and " & Paise & " Paise"
 End Select
 SpellNumber = IIf(incRupees, "Rupees ", "") & Crores & _
 Lakhs & Rupees & Paise & " Only "
 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
'================================
 'Code
 '================================

Download Example File Convert Numbers To Words.xls

Also read

Comments

      1. Rituraj Sarma

        I have a question that unable to solve. The formate is given below and required to fill up by excel formula or V basic……
        Designation Name ph no
        Head Teacher– Nirmali 22222222
        Asstt 1 — Lina 33333333
        Asstt2 —— Jitul 44444444

        Format:

        Head teacher ph no Asstt 1 ph no Asstt 2 ph no

  1. krishna

    Hi,
    following function get error
    myCrores = MyNumber 10000000
    myLakhs = (MyNumber – myCrores * 10000000) 100000
    Plz rectify

    1. Raghu R Article Author

      can you please tell me what will be the input value for MyNumber and what is the expected result for myLakhs

  2. Nitin Srivastava

    The file is not downloadable and the code shared is an image. Can you please either share the code as text or make the file available.

Leave a Reply

Your email address will not be published. Required fields are marked *

5 + five =

This site uses Akismet to reduce spam. Learn how your comment data is processed.