A Microsoft Office (Excel, Word) forum. OfficeFrustration

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » OfficeFrustration forum » Microsoft Excel » Worksheet Functions
Site Map Home Register Authors List Search Today's Posts Mark Forums Read  

Conversion



 
 
Thread Tools Display Modes
  #1  
Old February 26th, 2005, 04:09 PM
SVC
external usenet poster
 
Posts: n/a
Default Conversion

I want to convert the amount entered in excel sheet to their respective text
value.
eg: 1,24,525
to be converted as
one lakh twenty four thousand five hundered and twenty five.


  #2  
Old February 26th, 2005, 06:37 PM
Bob Phillips
external usenet poster
 
Posts: n/a
Default

See

http://www.xldynamic.com/source/xld.xlFAQ0004.html
Convert Numbers To Text

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
I want to convert the amount entered in excel sheet to their respective

text
value.
eg: 1,24,525
to be converted as
one lakh twenty four thousand five hundered and twenty five.




  #3  
Old February 26th, 2005, 07:33 PM
SVC
external usenet poster
 
Posts: n/a
Default

The faq is useful for the american style but i need the indian style which
is detailed below. please help at the earliest in the group or direct to my
mail id which is

Currency symbol = Rs.
Currency names = Rupees(as Dollors) & Paise(as Cents)
denomations = units, tens, hundreds, thousands, ten thousands, lakhs, ten
lakhs, crorers, ten crorers
the digit sepration from the left to right is in 3 by 2 by 2 by 2 formation.

eg: Rs. 12,34,56,789.11 is called as twelve crores thirty four lakhs fifty
six thousand seven hundered and eleven paise


"Bob Phillips" wrote in message
...
See

http://www.xldynamic.com/source/xld.xlFAQ0004.html
Convert Numbers To Text

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
I want to convert the amount entered in excel sheet to their respective

text
value.
eg: 1,24,525
to be converted as
one lakh twenty four thousand five hundered and twenty five.






  #4  
Old February 26th, 2005, 08:06 PM
Bob Phillips
external usenet poster
 
Posts: n/a
Default

I answered a similar question to this a few weeks back. Check out if this
helps, but as I recall, the OP didn't answer my last question
http://tinyurl.com/4m4sp

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
The faq is useful for the american style but i need the indian style which
is detailed below. please help at the earliest in the group or direct to

my
mail id which is

Currency symbol = Rs.
Currency names = Rupees(as Dollors) & Paise(as Cents)
denomations = units, tens, hundreds, thousands, ten thousands, lakhs, ten
lakhs, crorers, ten crorers
the digit sepration from the left to right is in 3 by 2 by 2 by 2

formation.

eg: Rs. 12,34,56,789.11 is called as twelve crores thirty four lakhs fifty
six thousand seven hundered and eleven paise


"Bob Phillips" wrote in message
...
See

http://www.xldynamic.com/source/xld.xlFAQ0004.html
Convert Numbers To Text

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
I want to convert the amount entered in excel sheet to their respective

text
value.
eg: 1,24,525
to be converted as
one lakh twenty four thousand five hundered and twenty five.








  #5  
Old February 27th, 2005, 12:43 PM
SVC
external usenet poster
 
Posts: n/a
Default

Dear BOB,
Hi!
i read the mail & followed the link. pl go through my prev reply carefully
your reply in in it.
any way i will try to make it as simple as possible for you now hopefully.

Money [or] numbers in india is split into units, tens, hundreds, thousands,
ten thousands, lakhs, ten lakhs, crorers, ten crorers
from left to right i shall detail you how each valu is called so that you
can code easily.

After decimel point (upto 2 decimal point) it is called paise (as cents in
US)

from left moving towards right each place is represented as follows

the eg value is Rs. 12,34,56,789.11 is called as twelve crores thirty four
lakhs fifty six thousand seven hundered and eleven paise

now

9 = units
8 = tens
6 = thousands
5 = ten thousands
4 = lakh
3 = ten lakh
2 = crore
1 = ten crores

if you follow the above meathod my orginal value which is 12345678.11 will
represent twelve crores thirty four lakhs fifty six thousand seven hundered
and eleven paise

in your code the same value returns
Rupees OneBillion Two Hundred Twenty ThreeMillion Four Hundred Fifty
SixThousand Seven Hundred Eighty Nine and Paise Eleven Only

I hope you understand what we want exactly.

rgds
Vinoth. S


"Bob Phillips" wrote in message
...
I answered a similar question to this a few weeks back. Check out if this
helps, but as I recall, the OP didn't answer my last question
http://tinyurl.com/4m4sp

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
The faq is useful for the american style but i need the indian style
which
is detailed below. please help at the earliest in the group or direct to

my
mail id which is

Currency symbol = Rs.
Currency names = Rupees(as Dollors) & Paise(as Cents)
denomations = units, tens, hundreds, thousands, ten thousands, lakhs, ten
lakhs, crorers, ten crorers
the digit sepration from the left to right is in 3 by 2 by 2 by 2

formation.

eg: Rs. 12,34,56,789.11 is called as twelve crores thirty four lakhs
fifty
six thousand seven hundered and eleven paise


"Bob Phillips" wrote in message
...
See

http://www.xldynamic.com/source/xld.xlFAQ0004.html
Convert Numbers To Text

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
I want to convert the amount entered in excel sheet to their
respective
text
value.
eg: 1,24,525
to be converted as
one lakh twenty four thousand five hundered and twenty five.










  #6  
Old February 27th, 2005, 03:01 PM
Bob Phillips
external usenet poster
 
Posts: n/a
Default

Vinoth,

How about this?

Function SpellNumber(ByVal MyNumber)
Dim Crores, Lakhs, Rupees, Paise, Temp
Dim DecimalPlace, 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 = "Rupees Zero "
Case "One": Rupees = "Rupee One "
Case Else: Rupees = "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

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




--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
Dear BOB,
Hi!
i read the mail & followed the link. pl go through my prev reply carefully
your reply in in it.
any way i will try to make it as simple as possible for you now hopefully.

Money [or] numbers in india is split into units, tens, hundreds,

thousands,
ten thousands, lakhs, ten lakhs, crorers, ten crorers
from left to right i shall detail you how each valu is called so that you
can code easily.

After decimel point (upto 2 decimal point) it is called paise (as cents in
US)

from left moving towards right each place is represented as follows

the eg value is Rs. 12,34,56,789.11 is called as twelve crores thirty

four
lakhs fifty six thousand seven hundered and eleven paise

now

9 = units
8 = tens
6 = thousands
5 = ten thousands
4 = lakh
3 = ten lakh
2 = crore
1 = ten crores

if you follow the above meathod my orginal value which is 12345678.11 will
represent twelve crores thirty four lakhs fifty six thousand seven

hundered
and eleven paise

in your code the same value returns
Rupees OneBillion Two Hundred Twenty ThreeMillion Four Hundred Fifty
SixThousand Seven Hundred Eighty Nine and Paise Eleven Only

I hope you understand what we want exactly.

rgds
Vinoth. S


"Bob Phillips" wrote in message
...
I answered a similar question to this a few weeks back. Check out if this
helps, but as I recall, the OP didn't answer my last question
http://tinyurl.com/4m4sp

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
The faq is useful for the american style but i need the indian style
which
is detailed below. please help at the earliest in the group or direct

to
my
mail id which is

Currency symbol = Rs.
Currency names = Rupees(as Dollors) & Paise(as Cents)
denomations = units, tens, hundreds, thousands, ten thousands, lakhs,

ten
lakhs, crorers, ten crorers
the digit sepration from the left to right is in 3 by 2 by 2 by 2

formation.

eg: Rs. 12,34,56,789.11 is called as twelve crores thirty four lakhs
fifty
six thousand seven hundered and eleven paise


"Bob Phillips" wrote in message
...
See

http://www.xldynamic.com/source/xld.xlFAQ0004.html
Convert Numbers To Text

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
I want to convert the amount entered in excel sheet to their
respective
text
value.
eg: 1,24,525
to be converted as
one lakh twenty four thousand five hundered and twenty five.












  #7  
Old February 27th, 2005, 03:20 PM
SVC
external usenet poster
 
Posts: n/a
Default

Dear Bob,
Thanks a million it worked just as i wanted. i am sure many many people will
be benifitted from this. there is a small problem
the result i get in the excell cell is

Twelve Crores Thirty Four Lakhs Rupees Fifty Six Thousand Seven Hundred
Eighty Nine and Paise Eleven Only

the word rupees appears in between it should appear at the begining or never
appear. pl mail me what changes i should make in the vb code for this
effect.

rgds
vinoth.


"Bob Phillips" wrote in message
...
Vinoth,

How about this?

Function SpellNumber(ByVal MyNumber)
Dim Crores, Lakhs, Rupees, Paise, Temp
Dim DecimalPlace, 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 = "Rupees Zero "
Case "One": Rupees = "Rupee One "
Case Else: Rupees = "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

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




--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
Dear BOB,
Hi!
i read the mail & followed the link. pl go through my prev reply
carefully
your reply in in it.
any way i will try to make it as simple as possible for you now
hopefully.

Money [or] numbers in india is split into units, tens, hundreds,

thousands,
ten thousands, lakhs, ten lakhs, crorers, ten crorers
from left to right i shall detail you how each valu is called so that you
can code easily.

After decimel point (upto 2 decimal point) it is called paise (as cents
in
US)

from left moving towards right each place is represented as follows

the eg value is Rs. 12,34,56,789.11 is called as twelve crores thirty

four
lakhs fifty six thousand seven hundered and eleven paise

now

9 = units
8 = tens
6 = thousands
5 = ten thousands
4 = lakh
3 = ten lakh
2 = crore
1 = ten crores

if you follow the above meathod my orginal value which is 12345678.11
will
represent twelve crores thirty four lakhs fifty six thousand seven

hundered
and eleven paise

in your code the same value returns
Rupees OneBillion Two Hundred Twenty ThreeMillion Four Hundred Fifty
SixThousand Seven Hundred Eighty Nine and Paise Eleven Only

I hope you understand what we want exactly.

rgds
Vinoth. S


"Bob Phillips" wrote in message
...
I answered a similar question to this a few weeks back. Check out if
this
helps, but as I recall, the OP didn't answer my last question
http://tinyurl.com/4m4sp

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
The faq is useful for the american style but i need the indian style
which
is detailed below. please help at the earliest in the group or direct

to
my
mail id which is

Currency symbol = Rs.
Currency names = Rupees(as Dollors) & Paise(as Cents)
denomations = units, tens, hundreds, thousands, ten thousands, lakhs,

ten
lakhs, crorers, ten crorers
the digit sepration from the left to right is in 3 by 2 by 2 by 2
formation.

eg: Rs. 12,34,56,789.11 is called as twelve crores thirty four lakhs
fifty
six thousand seven hundered and eleven paise


"Bob Phillips" wrote in message
...
See

http://www.xldynamic.com/source/xld.xlFAQ0004.html
Convert Numbers To Text

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
I want to convert the amount entered in excel sheet to their
respective
text
value.
eg: 1,24,525
to be converted as
one lakh twenty four thousand five hundered and twenty five.














  #8  
Old February 27th, 2005, 03:49 PM
Bob Phillips
external usenet poster
 
Posts: n/a
Default

Vinoth,

Do you mean like this

Rupees Twelve Crores Thirty Four Lakhs Fifty Six Thousand Seven Hundred
Eighty Nine and Paise Eleven Only

or

Twelve Crores Thirty Four Lakhs Fifty Six Thousand Seven Hundred Eighty Nine
and Paise Eleven Only

I put Rupees there as I was told that was how it is represented in India
(but that was before I learnt about Lakhs and Crores).

Which way do you prefer?


--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
Dear Bob,
Thanks a million it worked just as i wanted. i am sure many many people

will
be benifitted from this. there is a small problem
the result i get in the excell cell is

Twelve Crores Thirty Four Lakhs Rupees Fifty Six Thousand Seven Hundred
Eighty Nine and Paise Eleven Only

the word rupees appears in between it should appear at the begining or

never
appear. pl mail me what changes i should make in the vb code for this
effect.

rgds
vinoth.


"Bob Phillips" wrote in message
...
Vinoth,

How about this?

Function SpellNumber(ByVal MyNumber)
Dim Crores, Lakhs, Rupees, Paise, Temp
Dim DecimalPlace, 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 = "Rupees Zero "
Case "One": Rupees = "Rupee One "
Case Else: Rupees = "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

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




--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
Dear BOB,
Hi!
i read the mail & followed the link. pl go through my prev reply
carefully
your reply in in it.
any way i will try to make it as simple as possible for you now
hopefully.

Money [or] numbers in india is split into units, tens, hundreds,

thousands,
ten thousands, lakhs, ten lakhs, crorers, ten crorers
from left to right i shall detail you how each valu is called so that

you
can code easily.

After decimel point (upto 2 decimal point) it is called paise (as cents
in
US)

from left moving towards right each place is represented as follows

the eg value is Rs. 12,34,56,789.11 is called as twelve crores thirty

four
lakhs fifty six thousand seven hundered and eleven paise

now

9 = units
8 = tens
6 = thousands
5 = ten thousands
4 = lakh
3 = ten lakh
2 = crore
1 = ten crores

if you follow the above meathod my orginal value which is 12345678.11
will
represent twelve crores thirty four lakhs fifty six thousand seven

hundered
and eleven paise

in your code the same value returns
Rupees OneBillion Two Hundred Twenty ThreeMillion Four Hundred Fifty
SixThousand Seven Hundred Eighty Nine and Paise Eleven Only

I hope you understand what we want exactly.

rgds
Vinoth. S


"Bob Phillips" wrote in message
...
I answered a similar question to this a few weeks back. Check out if
this
helps, but as I recall, the OP didn't answer my last question
http://tinyurl.com/4m4sp

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
The faq is useful for the american style but i need the indian style
which
is detailed below. please help at the earliest in the group or

direct
to
my
mail id which is

Currency symbol = Rs.
Currency names = Rupees(as Dollors) & Paise(as Cents)
denomations = units, tens, hundreds, thousands, ten thousands,

lakhs,
ten
lakhs, crorers, ten crorers
the digit sepration from the left to right is in 3 by 2 by 2 by 2
formation.

eg: Rs. 12,34,56,789.11 is called as twelve crores thirty four lakhs
fifty
six thousand seven hundered and eleven paise


"Bob Phillips" wrote in message
...
See

http://www.xldynamic.com/source/xld.xlFAQ0004.html
Convert Numbers To Text

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
I want to convert the amount entered in excel sheet to their
respective
text
value.
eg: 1,24,525
to be converted as
one lakh twenty four thousand five hundered and twenty five.
















  #9  
Old February 27th, 2005, 04:04 PM
Bob Phillips
external usenet poster
 
Posts: n/a
Default

Vinoth,

A solution that does either. To include Rupees, use something like

=SpellNumber(123456789,11)

To exclude

=SpellNumber(123456789.11,False)

--

Option Explicit

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 = " and Paise Zero Only "
Case "One": Paise = " and Paise One Only "
Case Else: Paise = " and Paise " & Paise & " Only "
End Select

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


HTH

RP
(remove nothere from the email address if mailing direct)


"Bob Phillips" wrote in message
...
Vinoth,

Do you mean like this

Rupees Twelve Crores Thirty Four Lakhs Fifty Six Thousand Seven Hundred
Eighty Nine and Paise Eleven Only

or

Twelve Crores Thirty Four Lakhs Fifty Six Thousand Seven Hundred Eighty

Nine
and Paise Eleven Only

I put Rupees there as I was told that was how it is represented in India
(but that was before I learnt about Lakhs and Crores).

Which way do you prefer?


--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
Dear Bob,
Thanks a million it worked just as i wanted. i am sure many many people

will
be benifitted from this. there is a small problem
the result i get in the excell cell is

Twelve Crores Thirty Four Lakhs Rupees Fifty Six Thousand Seven Hundred
Eighty Nine and Paise Eleven Only

the word rupees appears in between it should appear at the begining or

never
appear. pl mail me what changes i should make in the vb code for this
effect.

rgds
vinoth.


"Bob Phillips" wrote in message
...
Vinoth,

How about this?

Function SpellNumber(ByVal MyNumber)
Dim Crores, Lakhs, Rupees, Paise, Temp
Dim DecimalPlace, 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 = "Rupees Zero "
Case "One": Rupees = "Rupee One "
Case Else: Rupees = "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

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




--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
Dear BOB,
Hi!
i read the mail & followed the link. pl go through my prev reply
carefully
your reply in in it.
any way i will try to make it as simple as possible for you now
hopefully.

Money [or] numbers in india is split into units, tens, hundreds,
thousands,
ten thousands, lakhs, ten lakhs, crorers, ten crorers
from left to right i shall detail you how each valu is called so that

you
can code easily.

After decimel point (upto 2 decimal point) it is called paise (as

cents
in
US)

from left moving towards right each place is represented as follows

the eg value is Rs. 12,34,56,789.11 is called as twelve crores

thirty
four
lakhs fifty six thousand seven hundered and eleven paise

now

9 = units
8 = tens
6 = thousands
5 = ten thousands
4 = lakh
3 = ten lakh
2 = crore
1 = ten crores

if you follow the above meathod my orginal value which is 12345678.11
will
represent twelve crores thirty four lakhs fifty six thousand seven
hundered
and eleven paise

in your code the same value returns
Rupees OneBillion Two Hundred Twenty ThreeMillion Four Hundred Fifty
SixThousand Seven Hundred Eighty Nine and Paise Eleven Only

I hope you understand what we want exactly.

rgds
Vinoth. S


"Bob Phillips" wrote in message
...
I answered a similar question to this a few weeks back. Check out if
this
helps, but as I recall, the OP didn't answer my last question
http://tinyurl.com/4m4sp

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
The faq is useful for the american style but i need the indian

style
which
is detailed below. please help at the earliest in the group or

direct
to
my
mail id which is

Currency symbol = Rs.
Currency names = Rupees(as Dollors) & Paise(as Cents)
denomations = units, tens, hundreds, thousands, ten thousands,

lakhs,
ten
lakhs, crorers, ten crorers
the digit sepration from the left to right is in 3 by 2 by 2 by 2
formation.

eg: Rs. 12,34,56,789.11 is called as twelve crores thirty four

lakhs
fifty
six thousand seven hundered and eleven paise


"Bob Phillips" wrote in

message
...
See

http://www.xldynamic.com/source/xld.xlFAQ0004.html
Convert Numbers To Text

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
I want to convert the amount entered in excel sheet to their
respective
text
value.
eg: 1,24,525
to be converted as
one lakh twenty four thousand five hundered and twenty five.


















  #10  
Old February 28th, 2005, 02:29 PM
SVC
external usenet poster
 
Posts: n/a
Default

Dear Bob

Thank you that solved all problems.

rgds
Vinoth. S

"Bob Phillips" wrote in message
...
Vinoth,

A solution that does either. To include Rupees, use something like

=SpellNumber(123456789,11)

To exclude

=SpellNumber(123456789.11,False)

--

Option Explicit

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 = " and Paise Zero Only "
Case "One": Paise = " and Paise One Only "
Case Else: Paise = " and Paise " & Paise & " Only "
End Select

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


HTH

RP
(remove nothere from the email address if mailing direct)


"Bob Phillips" wrote in message
...
Vinoth,

Do you mean like this

Rupees Twelve Crores Thirty Four Lakhs Fifty Six Thousand Seven Hundred
Eighty Nine and Paise Eleven Only

or

Twelve Crores Thirty Four Lakhs Fifty Six Thousand Seven Hundred Eighty

Nine
and Paise Eleven Only

I put Rupees there as I was told that was how it is represented in India
(but that was before I learnt about Lakhs and Crores).

Which way do you prefer?


--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
Dear Bob,
Thanks a million it worked just as i wanted. i am sure many many people

will
be benifitted from this. there is a small problem
the result i get in the excell cell is

Twelve Crores Thirty Four Lakhs Rupees Fifty Six Thousand Seven Hundred
Eighty Nine and Paise Eleven Only

the word rupees appears in between it should appear at the begining or

never
appear. pl mail me what changes i should make in the vb code for this
effect.

rgds
vinoth.


"Bob Phillips" wrote in message
...
Vinoth,

How about this?

Function SpellNumber(ByVal MyNumber)
Dim Crores, Lakhs, Rupees, Paise, Temp
Dim DecimalPlace, 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 = "Rupees Zero "
Case "One": Rupees = "Rupee One "
Case Else: Rupees = "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

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




--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
Dear BOB,
Hi!
i read the mail & followed the link. pl go through my prev reply
carefully
your reply in in it.
any way i will try to make it as simple as possible for you now
hopefully.

Money [or] numbers in india is split into units, tens, hundreds,
thousands,
ten thousands, lakhs, ten lakhs, crorers, ten crorers
from left to right i shall detail you how each valu is called so
that

you
can code easily.

After decimel point (upto 2 decimal point) it is called paise (as

cents
in
US)

from left moving towards right each place is represented as follows

the eg value is Rs. 12,34,56,789.11 is called as twelve crores

thirty
four
lakhs fifty six thousand seven hundered and eleven paise

now

9 = units
8 = tens
6 = thousands
5 = ten thousands
4 = lakh
3 = ten lakh
2 = crore
1 = ten crores

if you follow the above meathod my orginal value which is
12345678.11
will
represent twelve crores thirty four lakhs fifty six thousand seven
hundered
and eleven paise

in your code the same value returns
Rupees OneBillion Two Hundred Twenty ThreeMillion Four Hundred Fifty
SixThousand Seven Hundred Eighty Nine and Paise Eleven Only

I hope you understand what we want exactly.

rgds
Vinoth. S


"Bob Phillips" wrote in message
...
I answered a similar question to this a few weeks back. Check out
if
this
helps, but as I recall, the OP didn't answer my last question
http://tinyurl.com/4m4sp

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
The faq is useful for the american style but i need the indian

style
which
is detailed below. please help at the earliest in the group or

direct
to
my
mail id which is

Currency symbol = Rs.
Currency names = Rupees(as Dollors) & Paise(as Cents)
denomations = units, tens, hundreds, thousands, ten thousands,

lakhs,
ten
lakhs, crorers, ten crorers
the digit sepration from the left to right is in 3 by 2 by 2 by 2
formation.

eg: Rs. 12,34,56,789.11 is called as twelve crores thirty four

lakhs
fifty
six thousand seven hundered and eleven paise


"Bob Phillips" wrote in

message
...
See

http://www.xldynamic.com/source/xld.xlFAQ0004.html
Convert Numbers To Text

--

HTH

RP
(remove nothere from the email address if mailing direct)


"SVC" wrote in message
...
I want to convert the amount entered in excel sheet to their
respective
text
value.
eg: 1,24,525
to be converted as
one lakh twenty four thousand five hundered and twenty five.




















 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Batch conversion wizard gets stuck on last screen.... BluEyes4u General Discussions 0 February 10th, 2005 12:41 PM
Excel to HTML Conversion Keith Young General Discussion 0 November 18th, 2004 03:28 PM
Excel - Conversion for Foreign Exchange jwcorn General Discussion 2 September 3rd, 2004 04:34 PM
File Conversion Encoding Dialogue Box SMLps General Discussion 1 August 12th, 2004 10:55 PM
Need help: Publisher 2002 conversion to .pdf files [email protected] Publisher 2 June 2nd, 2004 03:36 PM


All times are GMT +1. The time now is 12:48 AM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 OfficeFrustration.
The comments are property of their posters.