How to Convert Number to Words in Excel in Rupees

Excel does not provide any default function that converts a number or amount in words in Indian rupees or any currency. But it doesn't mean that we can't convert number to Indian rupee. We can create a custom Excel formula to convert number to words in Indian rupees. I have created this custom function to convert number to words in terms of Indian rupees. You can download the macro file below. I have mentioned the code below and explained a little bit, so that you can make changes as per your requirement.

Excel Function to Covert Number to Words in Indian Rupees

So use this function to convert the any 10 digit or less amount or number into words or rupees. I have named this function NUM_TO_IND_RUPEE_WORD. The syntax of this function is:

=NUM_TO_IND_RUPEE_WORD(number)

You can download the working macro file down:

Number to Words indian rupee

Now the code of the function is mentioned below.

This code is divided into four individual functions. The main function is NUM_TO_IND_RUPEE_WORD. And other three functions GetHunderds(), GetTens() and GetDigits are helping function that help the main function to form the string.

Function NUM_TO_IND_RUPEE_WORD(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 = " and Paise Zero Only "
  Case "One": Paise = " and Paise One Only "
  Case Else: Paise = " and Paise " & Paise & " Only "
 End Select
'creating the string of words to translate number into words
 NUM_TO_IND_RUPEE_WORD = IIf(incRupees, "Rupees ", "") & Crores & _ Lakhs & Rupees & Paise
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

The code of the function is long but easy to understand.

To use this code, insert a module in VBE and copy paste it. And the function is ready to be used on the sheet directly. It will convert the number into words, specifically in Indian rupee format.

So yeah guys, this is how you can use a custom function in Excel to convert number to words. I hope this is helpful. If you have any doubts regarding this article or any other function, ask in the comments section below.

Related Articles:

Create VBA Function to Return Array | To return an array using a custom function in Excel we use a slightly different syntax for writing the custom function. This function returns an array of values instead of just one values.

Arrays in Excel Formula|The arrays are a collection values of same type in every technical language. In excel it is same but treated slightly different then other programming languages..

How to Create User Defined Function through VBA | Learn how to create user-defined functions in Excel.

Using a User Defined Function (UDF) from another workbook using VBA in Microsoft Excel | Use the user-defined function in another workbook of Excel.

Return error values from user-defined functions using VBA in Microsoft Excel | Learn how you can return error values from a user-defined function.

Popular Articles:

50 Excel Shortcuts to Increase Your Productivity | Get faster at your task. These 50 shortcuts will make you work even faster on Excel.

How to use Excel VLOOKUP Function| This is one of the most used and popular functions of excel that is used to lookup value from different ranges and sheets.

How to use the Excel COUNTIF Function| Count values with conditions using this amazing function. You don't need to filter your data to count specific value. Countif function is essential to prepare your dashboard.

How to Use SUMIF Function in Excel | This is another dashboard essential function. This helps you sum up values on specific conditions.

Leave a Reply

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

Terms and Conditions of use

The applications/code on this site are distributed as is and without warranties or liability. In no event shall the owner of the copyrights, or the authors of the applications/code be liable for any loss of profit, any problems or any damage resulting from the use or evaluation of the applications/code.