Friday, March 7, 2014

Convert Currency To English in Excel




Copy the below codings.
Open excel press ALT F11
Insert module, Paste the codings and close

in excel type " =ConvertCurrencyToEnglish(X), "X = cell no)
enter (X)  any cell no having numeric value, it will be converted in to words.

==================================================================

Function ConvertCurrencyToEnglish(ByVal MyNumber)
         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)
            Paise = ConvertTens(Temp)

            ' Strip off Paise from remainder to convert.
            MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
         End If

         Count = 1
         Do While MyNumber <> ""
            ' Convert last 3 digits of MyNumber to English Rupees.
            If Count = 1 Then
                Temp = ConvertHundreds(Right(MyNumber, 3))
            Else
                Temp = ConvertTens(Right(MyNumber, 2))
            End If
            If Temp <> "" Then Rupees = Temp & Place(Count) & Rupees
            If Count = 1 Then
                If Len(MyNumber) > 3 Then
                   ' Remove last 3 converted digits from MyNumber.
                   MyNumber = Left(MyNumber, Len(MyNumber) - 3)
                Else
                   MyNumber = ""
                End If
            Else
                If Len(MyNumber) > 2 Then
                   ' Remove last 3 converted digits from MyNumber.
                   MyNumber = Left(MyNumber, Len(MyNumber) - 2)
                Else
                   MyNumber = ""
                End If
            End If
            Count = Count + 1
         Loop

         ' Clean up Rupees.
         Select Case Rupees
            Case ""
               Rupees = ""
            Case Else
               Rupees = " Rupees " & Rupees
         End Select

         ' Clean up Paise.
         Select Case Paise
            Case ""
               Paise = " "
            Case Else
                If Rupees <> "" Then
                    Paise = " and " & Paise & " Paise "
                Else
                    Paise = " " & Paise & " Paise "
                End If
         End Select

         ConvertCurrencyToEnglish = Rupees & Paise
         If Trim(ConvertCurrencyToEnglish) <> "" Then ConvertCurrencyToEnglish = ConvertCurrencyToEnglish & " Only"
     
      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
        
         ' Exit if there is nothing to convert.
         If Val(MyTens) = 0 Then Exit Function
        
         MyTens = Right("00" & MyTens, 2)
         ' 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

      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
==================================================================