Dilawar Abbas - Pakistan : Convert Numaric Figures into Words

Q. Kindly tell me how we can convert figures into words in excel i.e. 100, One hundred Only.

Solution:

Dear Dilawar Abbas,

Microsoft Excel has various function embedded built-in but still they are not enough to provide customized solutions. The good thing is that Microsoft Excel allow to its users to create their own functions according to their desired needs but for that you should have some command in VB (Visual Basic).

Dont worry! you don't have to write VB codes on your own, I have written down TWO CODES for you both to convert Numbers into Simple Text (i.e. 115 to One Hundred Fifteen Only) and Numbers into Pak Currency (i.e. 25 to Twenty Five Rupees Only). Please follow the instructions below:

To Convert Numbers into Words:

1. Open Excel New Workbook (File).
2. Press Alt+F11.
3. On Menu Bar Click to Insert -> Module.
4. New window opens, now Copy the code given below and Paste it.
5. Close the window.
6. Save the Excel file by selecting the file type as "Macro-Enabled Workbook".
7. Congratulations! New function named "SpellNumber" with syntex "=SpellNumber(cell ref!)" has been created.
8. Now you can use the function on any cell, for example : if CELL A1 contains the number "125", on CELL B1 type "=spellnumber(A1)" and the number will be spelled as "One Hundred Twenty Five".
9. To add the word "Only", we'll do it by Cell Custom Formatting.
10. Right Click on the CELL B1, click "Format Cells", on the "Number" tab click on "Custom" and Under "Type" text box write [ @" Only" ] (See figures).








CODE:


Function SpellNumber(ByVal MyNumber)
Dim Rupees, Temp
Dim DecimalPlace, Count

ReDim Place(9) As String
Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "


MyNumber = Trim(Str(MyNumber))


DecimalPlace = InStr(MyNumber, ".")

If DecimalPlace > 0 Then
Paisas = 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

Select Case Rupees
Case ""
Rupees = ""
Case "One"
Rupees = "One "
Case Else
Rupees = Rupees & " "
End Select

SpellNumber = Rupees
End Function
Function GetHundreds(ByVal MyNumber)
Dim Result As String

If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3)

If Mid(MyNumber, 1, 1) <> "0" Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
End If

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
Function GetTens(TensText)
Dim Result As String

Result = ""
If Val(Left(TensText, 1)) = 1 Then
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
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))



End If
GetTens = Result
End Function

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



Download Figures to Words Sample File



To Convert Numbers into Currency:

1. Open Excel New Workbook (File).
2. Press Alt+F11.
3. On Menu Bar Click to Insert -> Module.
4. New window opens, now Copy the code given below and Paste it.
5. Close the window.
6. Save the Excel file by selecting the file type as "Macro-Enabled Workbook".
7. Congratulations! New function named "SpellNumber" with syntex "=SpellNumber(cell ref!)" has been created.
8. Now you can use the function on any cell, for example : if CELL A1 contains the number "12.5", on CELL B1 type "=spellnumber(A1)" and the number will be spelled as "Twelve Rupees and Fifty Paisas".
9. To add the word "Only", we'll do it by Cell Custom Formatting.
10. Right Click on the CELL B1, click "Format Cells", on the "Number" tab click on "Custom" and Under "Type" text box write [ @" Only" ] (See figures).






CODE:

Function SpellNumber(ByVal MyNumber)
Dim Rupees, Paisas, Temp
Dim DecimalPlace, Count

ReDim Place(9) As String
Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "


MyNumber = Trim(Str(MyNumber))


DecimalPlace = InStr(MyNumber, ".")

If DecimalPlace > 0 Then
Paisas = 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

Select Case Rupees
Case ""
Rupees = ""
Case "One"
Rupees = "One Rupee"
Case Else
Rupees = Rupees & " Rupees"
End Select

Select Case Paisas
Case ""
Paisas = ""
Case "One"
Paisas = " and One Paisa"
Case Else
Paisas = " and " & Paisas & " Paisas"
End Select

SpellNumber = Rupees & Paisas
End Function
Function GetHundreds(ByVal MyNumber)
Dim Result As String

If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3)

If Mid(MyNumber, 1, 1) <> "0" Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
End If

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
Function GetTens(TensText)
Dim Result As String

Result = ""
If Val(Left(TensText, 1)) = 1 Then
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
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)) End If
GetTens = Result
End Function

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


Download Figures to Currency Words Sample File