Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 5
Default how to convert number to text

Hot to convert number like 10.125 to text " ten and 125 fils without use
v.basic

  #2   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 236
Default how to convert number to text

Don't believe it can be doen w/o the VB so here's the VB...
'/=============================================/
'Main Function
Function SpellNumber(ByVal MyNumber As String, _
Optional CurrencyName As String, _
Optional DecimalName As String) As String
'based on function from Microsoft Website:
'http://support.microsoft.com/default.aspx?scid=kb;en-us;213360
'accurate to Sextillions...
' 999,999,999,999,999,999,999,999.99
'(because I don't know what comes after sextillion)
'
'MyNumber can either be directly entered into the funtion
' as a string or a number or a cell range such as
' SpellNumber("123,456.00") or
' SpellNumber(123456.00) or
' SpellNumber(C12)
'
'CurrencyName is an optional string parameter
' If entered, it will replace the default "Dollar".
' For example, if you enter "Peso", that name will
' appear instead of 'Dollar'
'
'DecimalName is an optional string parameter
' If entered, it will replace the default "Cent".
' For example, if you enter "Pesar", that name will
' appear instead of 'Cent'
'
Dim Dollars, Cents, temp
Dim DecimalPlace, Count
Dim strCurrency As String, strDecimal As String
Dim strNegative As String

strCurrency = "Dollar"
strDecimal = "Cent"
strNegative = ""

If Len(CurrencyName) < 0 Then
strCurrency = Trim(CurrencyName)
End If

If Len(DecimalName) < 0 Then
strDecimal = Trim(DecimalName)
End If

ReDim Place(9) As String

Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "
Place(6) = " Quadrillion "
Place(7) = " Quintillion "
Place(8) = " Sextillion "

' String representation of amount because otherwise Excel
' represents large numbers using Scientific Notation
' such as 4.77874E+22 for 47,787,439,193,322,500,000,000.00
MyNumber = Format(MyNumber, "0,000.00")

'get rid of extraneous data such as '$' or ','
MyNumber = StripOut(MyNumber)

'check for negative sign
If Left(MyNumber, 1) = "-" Then
strNegative = "Minus "
If Len(MyNumber) 1 Then
MyNumber = Right(MyNumber, Len(MyNumber) - 1)
End If
End If

' Position of decimal place 0 if none.
DecimalPlace = InStr(MyNumber, ".")

' Convert cents and set MyNumber to dollar amount.
If DecimalPlace 0 Then
Cents = 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 Dollars = temp & Place(Count) & Dollars
If Len(MyNumber) 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop

Select Case Dollars
Case ""
Dollars = "No " & strCurrency & "s"
Case "One"
Dollars = "One " & strCurrency
Case Else
Dollars = Dollars & " " & strCurrency & "s"
End Select

Select Case Cents
Case ""
Cents = " and No " & strDecimal & "s"
Case "One"
Cents = " and One " & strDecimal
Case Else
Cents = " and " & Cents & " " & strDecimal & "s"
End Select

SpellNumber = strNegative & Dollars & Cents

End Function

'/=============================================/
' Converts a number from 100-999 into text
Private 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.
Private 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.
Private 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
'/=============================================/
Private Function StripOut(strNumber) As String
Dim iLen As Integer, i As Integer
Dim strInternationalDecimalSeparator As String
Dim strBuildNumber As String

iLen = Len(strNumber)

If iLen = 0 Then
StripOut = ""
Exit Function
End If

strBuildNumber = ""

strInternationalDecimalSeparator = _
Application.International(xlDecimalSeparator)

For i = 1 To iLen
Select Case Mid(strNumber, i, 1)
'test for numbers
Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
strBuildNumber = strBuildNumber & Mid(strNumber, i, 1)
'test for sign and decimal separator
Case "-", strInternationalDecimalSeparator
strBuildNumber = strBuildNumber & Mid(strNumber, i, 1)
Case Else
strBuildNumber = strBuildNumber
End Select
Next i

StripOut = strBuildNumber

End Function
'/=============================================/

------------
Hope This helps,
Sincerely,
Gary Brown



"Medegypt" wrote:

Hot to convert number like 10.125 to text " ten and 125 fils without use
v.basic

  #3   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 1,104
Default how to convert number to text

Hopefully you have a limited range of numbers.
Starting in A1 of Sheet2 (or some other unused sheet) make a column of words
zero
one
two
.....

I will assume you ended at "one hundred" in A101
On the worksheet use this formula where B1 holds the number to be treated
=INDEX(Sheet2!$A$1:$A$101,INT(B1)+1) &" and "&MOD(B1,1)*100 & " fils"
best wishes
--
Bernard V Liengme
Microsoft Excel MVP
http://people.stfx.ca/bliengme
remove caps from email

"Medegypt" wrote in message
...
Hot to convert number like 10.125 to text " ten and 125 fils without use
v.basic



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
NUMBER CONVERt INTO TEXT Irfan Ashraf Excel Discussion (Misc queries) 1 November 20th 08 07:06 AM
Convert a number to a text Tia[_3_] Excel Worksheet Functions 0 June 18th 08 10:02 AM
Convert text number to number formate [email protected] Excel Discussion (Misc queries) 2 April 9th 07 10:48 AM
convert text-format number to number in excel 2000%3f Larry Excel Discussion (Misc queries) 1 July 29th 05 08:18 PM
not able to convert text, or graphic number to regular number in e knutsenk Excel Worksheet Functions 1 April 2nd 05 08:41 AM


All times are GMT +1. The time now is 01:33 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"