arelygzz@hotmail.com

15/10/2005 - 18:03 por ARELY GONZALEZ | Informe spam
hola chicos lo que pasa es que estoy en una bronk de neuronas, pues quiero
pasar cantidad a texto es decir 1,200 ( UN MIL DOSCIENTOS PESOS 00/100 M. N.
), Pero estoy viendo algunas respuestas que les dan a las personas con las
mismas dudas, sólo please informenme la formula, nada de guille ni nada de
eso ya que mi MAC esta sensurada a download pues por seguridad de la empresa
y por lógica que aunque baje este para intergarlo a máquina me pide el
password y este no tengo. sólo diganme que poner en la celda
=$%/(&/))(())/$·· sin espacios ni nada para solo copiar y pegar.

agradezco sus finas atenciones y su pronta respuesta, a porcierto la version
que tengo de excel es
EXCEL FOR MAC Version 11.1 (no se si esto tenga que ver en que se tarden en
mi auxilio) ciao

Preguntas similare

Leer las respuestas

#1 Hernandez, Roberto
15/10/2005 - 21:11 | Informe spam
Hola Arely!!!

El código que anexo se tiene que pegar en un módulo de VBA (Alt+F11). Una
vez que hayas abierto el editor de VBA inserta un nuevo módulo , copia lo
que está entre los asteriscos y pégalo en el nuevo módulo.

Una vez hecho esto, sólo tendrás que escribir en cualquier celda de tu libro
de Excel, la función =LETRA(A1), en donde A! es la celda en donde tienes la
cantidad con número.

Dos noticias malas. No sé si funcione en Excel para Mac...
Está hecha para pesos mexicanos...

Si te interesa (y te funciona), tengo una versión en dollars y una en Reais
(para Brasil)..

Ciao


'***************************************************************************************
Option Explicit


' Funcion principal


Function LETRA(ByVal MyNumber)
Dim Pesos, Cents, Temp, Number
Dim DecimalPlace, Count

ReDim Place(9) As String 'Crea una matriz
Place(2) = " MIL "
Place(3) = " MILLONES "
Place(4) = " MIL "


' Convierte la cantidad a una cadena
MyNumber = Trim(Str(MyNumber))
Number = MyNumber

' Posicion del punto decimal o cero si no existe
DecimalPlace = InStr(MyNumber, ".")
' Convierte centavos y asigna a MyNumber cantidad en pesos.
If (DecimalPlace > 0) Then
If Mid(Right(MyNumber, 2), 1, 1) <> "." Then
Cents = Trim(Right(MyNumber, 2)) 'Si tiene dos decimales
Else
Cents = Trim(Right(MyNumber, 1)) & "0" 'Si tiene un decimal
End If
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1)) 'Captura los
enteros
End If

Count = 1
Do While MyNumber <> ""
Temp = GetHundreds(Right(MyNumber, 3))
If (Temp <> "") And (Left(MyNumber, 1) <> 0) Then Pesos = Temp
& Place(Count) & Pesos 'Asigna miles o millones
If (Mid(Pesos, 1, 11) = "UN MILLONES") And (Left(Number, 1)
= 1) And (Count = 3) Then Pesos = "UN MILLÓN" & Mid(Pesos, 12, (Len(Pesos) -
11))
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3) 'Extrae
tercias de numeros
Else
MyNumber = ""
End If
Count = Count + 1 'Incrementa el contador
Loop

Select Case Pesos 'Selecciona la terminacion de pesos
Case "": Pesos = "CERO PESOS"
Case "UN": Pesos = "UN PESO"
Case "UN MILLÓN ": Pesos = Pesos & "DE PESOS "
Case "DOS MILLONES ": Pesos = Pesos & "DE PESOS "
Case "TRES MILLONES ": Pesos = Pesos & "DE PESOS "
Case "CUATRO MILLONES ": Pesos = Pesos & "DE PESOS "
Case "CINCO MILLONES ": Pesos = Pesos & "DE PESOS "
Case "SEIS MILLONES ": Pesos = Pesos & "DE PESOS "
Case "SIETE MILLONES ": Pesos = Pesos & "DE PESOS "
Case "OCHO MILLONES ": Pesos = Pesos & "DE PESOS "
Case "NUEVE MILLONES ": Pesos = Pesos & "DE PESOS "
Case "DIEZ MILLONES ": Pesos = Pesos & "DE PESOS "
Case Else
Pesos = Pesos & " PESOS"

End Select

Select Case Cents 'Selecciona la terminacion de centavos
Case ""
Cents = " 00/100 M.N."
Case "UN"
Cents = " 01/100 M.N."
Case Else
Cents = " " & Cents & "/100 M.N."
End Select
LETRA = "(" & Pesos & Cents & ")"
End Function


' Convierte un numero entre 100 y 999 a texto.


Function GetHundreds(ByVal MyNumber)
Dim Result As String

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

' Convierte los cientos.
If (Mid(MyNumber, 1, 1) <> "0") And (Mid(MyNumber, 1, 1) <> "1")
And (Mid(MyNumber, 1, 1) <> "5") And (Mid(MyNumber, 1, 1) <> "7") And
(Mid(MyNumber, 1, 1) <> "9") Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & "CIENTOS "
Else
If (Mid(MyNumber, 1, 1) = "1") And (Mid(MyNumber, 2, 1) = "0")
And (Mid(MyNumber, 3, 1) = "0") Then
Result = "CIEN "
Else
If (Mid(MyNumber, 1, 1) <> "0") Then
Result = "CIENTO "
End If
End If
Select Case Val(Mid(MyNumber, 1, 1))
Case 5: Result = "QUINIENTOS "
Case 7: Result = "SETECIENTOS "
Case 9: Result = "NOVECIENTOS "
Case Else
End Select
End If

' Convierte decenas y unidades.
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


' Convierte un numero entre 10 y 99 en texto.


Function GetTens(TensText)
Dim Result As String

Result = "" ' Anula el valor temporal de la función.
If Val(Left(TensText, 1)) = 1 Then ' Si el valor esta entre 10 y
19...
Select Case Val(TensText)
Case 10: Result = "DIEZ"
Case 11: Result = "ONCE"
Case 12: Result = "DOCE"
Case 13: Result = "TRECE"
Case 14: Result = "CATORCE"
Case 15: Result = "QUINCE"
Case 16: Result = "DIECISÉIS"
Case 17: Result = "DIECISIETE"
Case 18: Result = "DIECIOCHO"
Case 19: Result = "DIECINUEVE"
Case Else
End Select
Else ' Si el valor está entre 20 y
99...
Select Case Val(Left(TensText, 1))
Case 2:
If Val(Mid(TensText, 2, 1)) = "0" Then
Result = "VEINTE"
Else
Result = "VEINTI"
End If
Case 3: Result = "TREINTA"
Case 4: Result = "CUARENTA"
Case 5: Result = "CINCUENTA"
Case 6: Result = "SESENTA"
Case 7: Result = "SETENTA"
Case 8: Result = "OCHENTA"
Case 9: Result = "NOVENTA"
Case Else
End Select
If (Val(Mid(TensText, 2, 1)) = "0") Or (Val(Mid(TensText, 1,
1)) = "2") Then
Result = Result & GetDigit _
(Right(TensText, 1))
If Result = "VEINTIUN" Then
Result = "VEINTIÚN"
End If
If Result = "VEINTIDOS" Then
Result = "VEINTIDÓS"
End If
If Result = "VEINTITRES" Then
Result = "VEINTITRÉS"
End If
If Result = "VEINTISEIS" Then
Result = "VEINTISÉIS"
End If
Else
Result = Result & " Y " & GetDigit _
(Right(TensText, 1))
End If
End If
GetTens = Result
End Function


' Convierte un numero entre 1 y 99 a texto


Function GetDigit(Digit)
Select Case Val(Digit)
Case 1: GetDigit = "UN"
Case 2: GetDigit = "DOS"
Case 3: GetDigit = "TRES"
Case 4: GetDigit = "CUATRO"
Case 5: GetDigit = "CINCO"
Case 6: GetDigit = "SEIS"
Case 7: GetDigit = "SIETE"
Case 8: GetDigit = "OCHO"
Case 9: GetDigit = "NUEVE"
Case Else: GetDigit = ""
End Select
End Function

'***********************************************************************************
"ARELY GONZALEZ" <ARELY escribió en el
mensaje news:
hola chicos lo que pasa es que estoy en una bronk de neuronas, pues quiero
pasar cantidad a texto es decir 1,200 ( UN MIL DOSCIENTOS PESOS 00/100 M.
N.
), Pero estoy viendo algunas respuestas que les dan a las personas con las
mismas dudas, sólo please informenme la formula, nada de guille ni nada de
eso ya que mi MAC esta sensurada a download pues por seguridad de la
empresa
y por lógica que aunque baje este para intergarlo a máquina me pide el
password y este no tengo. sólo diganme que poner en la celda
=$%/(&/))(())/$·· sin espacios ni nada para solo copiar y pegar.

agradezco sus finas atenciones y su pronta respuesta, a porcierto la
version
que tengo de excel es
EXCEL FOR MAC Version 11.1 (no se si esto tenga que ver en que se tarden
en
mi auxilio) ciao
Respuesta Responder a este mensaje
#2 Héctor Miguel
15/10/2005 - 21:20 | Informe spam
hola, Arely !

... quiero pasar cantidad a texto es decir 1,200 ( UN MIL DOSCIENTOS PESOS 00/100 M. N. )
... viendo algunas respuestas... solo please informenme la formula... ya que mi MAC esta sensurada a download
... solo diganme que poner en la celda =$%/(&/))(())/$ sin espacios ni nada para solo copiar y pegar [...]



1) suponiendo que tu mac no esta 'peleada' con la creacion y uso de macros [y que no te resultan del todo desconocidas]...
crea un modulo de codigo 'normal' y copias/pegar las lineas que te paso al final del presente ;) o...

2) si solo te interesa convertir una o dos o tres cantidades...
podrias 'echar a perder' +/- 12 0 15 celdas por 'cantidad a convertir' usando formulas y concatenando textos
o... +/- 30 o 35 'nombres definidos' [mismo procedimiento anterior]
-> si te inclinas por este 'procedimiento'... avisas ? [para no 'saturar' este mensaje] :))

si cualquier duda... comentas?
saludos,
hector.

-> el siguiente codigo, lo puedes 'personalizar' para [practicamente] CUALQUIER 'necesidad' en las primeras 12 lineas.
ya 'incluye' un argumento 'opcional' para la 'salida' del texto en mayusculas/minusculas/... :))
->solo monedas del 'genero' masculino<-... 'trabajar' con el genero femenino 'requiere quemar' [unas cuantas] mas neuronas :))
existen otros diversos algoritmos [desde 'sencillos' hasta 'complejos'] para otras tambien diversas 'necesidades'...
->copialo en un modulo 'normal' y 'llama' a la funcion como a cualquier otra funcion de hoja de calculo<-
->TEN CUIDADO con los 'saltos de linea' si copias/pegas el codigo desde la ventana del mensaje<- OJO

en un modulo de codigo 'normal' ==Function EnLetras(Valor, Optional ByVal Tipo As Byte = 1) As String ' Funcion Principal '
If Not IsNumeric(Valor) Then
EnLetras = "¡ La referencia no es valor o... 'excede' la precisión !!!": Exit Function
End If: Dim Moneda As String, Fracs As String, Cents As Integer
If Int(Abs(Valor)) = 1 Then Moneda = " peso" Else Moneda = " pesos"
If Right(Letras(Abs(Int(Valor))), 6) = "illón " Or Right(Letras(Abs(Int(Valor))), 8) = "illones " Then Moneda = "de" & Moneda
Cents = Application.Round(Abs(Valor) - Int(Abs(Valor)), 2) * 100
If Cents = 1 Then Fracs = " centavo" Else Fracs = " centavos"
If Cents = 0 Then Fracs = "" Else Fracs = " con " & Letras(Cents) & Fracs
EnLetras = Letras(Int(Abs(Valor))) & Moneda & Fracs
If Valor < 0 Then EnLetras = "menos " & EnLetras
If Tipo = 2 Then EnLetras = UCase(EnLetras) ' TODO EN MAYUSCULAS '
If Tipo = 3 Then EnLetras = StrConv(EnLetras, vbProperCase) ' Todo Como Nombre Propio '
If Tipo = 4 Then EnLetras = UCase(Left(EnLetras, 1)) & Mid(EnLetras, 2) ' Primer letra en mayuscula SOLAMENTE '
EnLetras = "(" & EnLetras & ")"
End Function
Private Function Letras(Valor) As String ' Función Auxiliar [uso 'exclusivo' de la funcion 'principal'] '
Select Case Int(Valor)
Case 0: Letras = "cero"
Case 1: Letras = "un"
Case 2: Letras = "dos"
Case 3: Letras = "tres"
Case 4: Letras = "cuatro"
Case 5: Letras = "cinco"
Case 6: Letras = "seis"
Case 7: Letras = "siete"
Case 8: Letras = "ocho"
Case 9: Letras = "nueve"
Case 10: Letras = "diez"
Case 11: Letras = "once"
Case 12: Letras = "doce"
Case 13: Letras = "trece"
Case 14: Letras = "catorce"
Case 15: Letras = "quince"
Case Is < 20: Letras = "dieci" & Letras(Valor - 10)
Case 20: Letras = "veinte"
Case Is < 30: Letras = "veinti" & Letras(Valor - 20)
Case 30: Letras = "treinta"
Case 40: Letras = "cuarenta"
Case 50: Letras = "cincuenta"
Case 60: Letras = "sesenta"
Case 70: Letras = "setenta"
Case 80: Letras = "ochenta"
Case 90: Letras = "noventa"
Case Is < 100: Letras = Letras(Int(Valor \ 10) * 10) & " y " & Letras(Valor Mod 10)
Case 100: Letras = "cien"
Case Is < 200: Letras = "ciento " & Letras(Valor - 100)
Case 200, 300, 400, 600, 800: Letras = Letras(Int(Valor \ 100)) & "cientos"
Case 500: Letras = "quinientos"
Case 700: Letras = "setecientos"
Case 900: Letras = "novecientos"
Case Is < 1000: Letras = Letras(Int(Valor \ 100) * 100) & " " & Letras(Valor Mod 100)
Case 1000: Letras = "mil"
Case Is < 2000: Letras = "mil " & Letras(Valor Mod 1000)
Case Is < 1000000: Letras = Letras(Int(Valor \ 1000)) & " mil"
If Valor Mod 1000 Then Letras = Letras & " " & Letras(Valor Mod 1000)
Case 1000000: Letras = "un millón "
Case Is < 2000000: Letras = "un millón " & Letras(Valor Mod 1000000)
Case Is < 1000000000000#: Letras = Letras(Int(Valor / 1000000)) & " millones "
If (Valor - Int(Valor / 1000000) * 1000000) _
Then Letras = Letras & Letras(Valor - Int(Valor / 1000000) * 1000000)
Case 1000000000000#: Letras = "un billón "
Case Is < 2000000000000#
Letras = "un billón " & Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
Case Else: Letras = Letras(Int(Valor / 1000000000000#)) & " billones "
If (Valor - Int(Valor / 1000000000000#) * 1000000000000#) _
Then Letras = Letras & " " & Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
End Select
End Function
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida