Foros


Inicio » Excel

Página: 1 2

Mensaje Autor

Arriba
28/Jun/05 8:30
Numeros a letras

Me podrian ayudar con alguna aplicacion en excel para convertir cifras a su equivalente en palabras ya que en las solicitudes que elaboro tengo que escribir la cantidad " con letra de molde " como lo indica el formato .

Gracias de antemano

Saludos!!

Halicarnasus
 
Perfil

halicarnasus
Soldado

Mensajes: 6
Ingresó: Junio 11, 2004
Ubicación:

No Conectado

Agregar como amigo

Arriba
28/Jun/05 8:32
Re: Numeros a letras

Aqui en descargas encuentras un archivo
 
ge01rar01do58@hotmail.com MI PADRE SIEMPRE ME DECIA: ENCUENTRA UN TRABAJO QUE TE GUSTE Y NO TENDRAS QUE TRABAJAR UN SOLO DIA DE TU VIDA
 
Perfil

gerardoba
Capitán Segundo

Mensajes: 375
Ingresó: Junio 16, 2004
Ubicación:

No Conectado

Agregar como amigo

Arriba
28/Jun/05 8:45
Re: Numeros a letras

gerardoba

Gracias , ya utilice el archivo y funciona perfectamente

Saludos!!


Halicarnasus
 
Perfil

halicarnasus
Soldado

Mensajes: 6
Ingresó: Junio 11, 2004
Ubicación:

No Conectado

Agregar como amigo

Arriba
28/Jun/05 9:23
Re: Numeros a letras

gerardoba

Como comentario para la utilizacion de este archivo para los colegas que tengan la misma necesida que yo es que copien las hojas de su libro en el cual tienen la informacion al archivo que se encuentra en descargas "Letras.xls" como hojas adicionales, esto puede ser posicionando el puntero en la pestaña del libro en el que trabajan actualmente y opriman el boton derecho del raton y seleccionen mover o copiar teniendo los dos libros abiertos y marques la opcion de "como copia" teniendo el libro de "Letras.xls" en el menu de "al libro" y al final solo reemplazas el archivo que tenias anteriormente.

Espero que este comentario le sea util a algunos de los interesados en esta funcion.

Saludos!!

Halicarnasus.
 
Perfil

halicarnasus
Soldado

Mensajes: 6
Ingresó: Junio 11, 2004
Ubicación:

No Conectado

Agregar como amigo

Arriba
28/Jun/05 17:54

Ya lo descargué y en efecto si hace la conversiòn pero hay un problema:

En los centavos cuando son menos de diez, no aplica los dos digitos.

Por ejemplo:

45.07 ( CUARENTA Y CINCO PESOS 07/100 M.N.)

La conversiòn la hace asì:

45.07 (CUARENTA Y CINCO PESOS 7/100 M.N.)

Es decir, falta el cero antes del siete, no se si sea problema de la aplicaciòn o de la configuraciòn de mi màquina, chequenlo ustedes a ver si pasa lo mismo o estoy mal por acà.

Saludos.
 
[color=black:5d36c7ecef][size=16:5d36c7ecef]JC@rlos[/size:5d36c7ecef][/color:5d36c7ecef] [color=grey:5d36c7ecef]El mayor conocimiento que existe, es conocerse a sí mismo[/color:5d36c7ecef]
 
Perfil

jcarlos923
Teniente

Mensajes: 332
Ingresó: Enero 09, 2005
Ubicación:

No Conectado

Agregar como amigo

Arriba
28/Jun/05 19:49
Re: Numeros a letras

Debe ser un problema de la Función, checa esta:
[code:1:087abe76a0]Option Explicit
'Argumentos:
'Numero = Valor que deseamos convertir en texto
'Moneda = es el nombre de la moneda a mostrar
'Fraccion_Letras = Verdadero para que la fraccion de la moneda
' tambien la convierta a letras
'Fraccion = Es el nombre de la fraccion de la moneda
'Texto_Inicial = Cualquier texto que quieras al principio del resultado
'Texto_Final = Cualquier texto que quieras al finla del resultado
'Estilo = Formato de salida
' 1 = MAYUSCULAS
' 2 = minusculas
' 3 = Tipo Titulo
'Los valores negativos los convierte a positivos
'El valor minimo en 0, el valor maximo es 9,999,999,999,999.99

Public Function Numeros_Letras(ByVal Numero As Double, _
ByVal Moneda As String, _
Optional Fraccion_Letras As Boolean = False, _
Optional Fraccion As String = "", _
Optional Texto_Inicial As String = "", _
Optional Texto_Final As String = "", _
Optional Estilo As Integer = 1) As String
Dim strLetras As String
Dim NumTmp As String
Dim intFraccion As Integer

strLetras = Texto_Inicial
'Convertimos a positivo si es negativo
Numero = Abs(Numero)
NumTmp = Format(Numero, "000000000000000.00")
If Numero < 1 Then
strLetras = strLetras & "cero " & Plural(Moneda) & " "
Else
strLetras = strLetras & NumLet(Val(Left(NumTmp, 15)))
If Val(NumTmp) = 1 Or Val(NumTmp) < 2 Then
strLetras = strLetras & Moneda & " "
ElseIf Val(Mid(NumTmp, 4, 12)) = 0 Or Val(Mid(NumTmp, 10, 6)) = 0 Then
strLetras = strLetras & "de " & Plural(Moneda) & " "
Else
strLetras = strLetras & Plural(Moneda) & " "
End If
End If
If Fraccion_Letras Then
intFraccion = Val(Right(NumTmp, 2))
Select Case intFraccion
Case 0
strLetras = strLetras & "con cero " & Plural(Fraccion)
Case 1
strLetras = strLetras & "con un " & Fraccion
Case Else
strLetras = strLetras & "con " & NumLet(Val(Right(NumTmp, 2))) & Plural(Fraccion)
End Select
Else
strLetras = strLetras & Right(NumTmp, 2)
End If
strLetras = strLetras & Texto_Final
Select Case Estilo
Case 1
strLetras = StrConv(strLetras, vbUpperCase)
Case 2
strLetras = StrConv(strLetras, vbLowerCase)
Case 3
strLetras = StrConv(strLetras, vbProperCase)
End Select

Numeros_Letras = strLetras

End Function

Public Function NumLet(ByVal Numero As Double) As String
Dim NumTmp As String
Dim co1 As Integer
Dim co2 As Integer
Dim pos As Integer
Dim dig As Integer
Dim cen As Integer
Dim dec As Integer
Dim uni As Integer
Dim letra1 As String
Dim letra2 As String
Dim letra3 As String
Dim Leyenda As String
Dim TFNumero As String

NumTmp = Format(Numero, "000000000000000") 'Le da un formato fijo
co1 = 1
pos = 1
TFNumero = ""
'Para extraer tres digitos cada vez
Do While co1 <= 5
co2 = 1
Do While co2 <= 3
'Extrae un digito cada vez de izquierda a derecha
dig = Val(Mid(NumTmp, pos, 1))
Select Case co2
Case 1: cen = dig
Case 2: dec = dig
Case 3: uni = dig
End Select
co2 = co2 + 1
pos = pos + 1
Loop
letra3 = Centena(uni, dec, cen)
letra2 = Decena(uni, dec)
letra1 = Unidad(uni, dec)

Select Case co1
Case 1
If cen + dec + uni = 1 Then
Leyenda = "billon "
ElseIf cen + dec + uni > 1 Then
Leyenda = "billones "
End If
Case 2
If cen + dec + uni >= 1 And Val(Mid(NumTmp, 7, 3)) = 0 Then
Leyenda = "mil millones "
ElseIf cen + dec + uni >= 1 Then
Leyenda = "mil "
End If
Case 3
If cen + dec = 0 And uni = 1 Then
Leyenda = "millon "
ElseIf cen > 0 Or dec > 0 Or uni > 1 Then
Leyenda = "millones "
End If
Case 4
If cen + dec + uni >= 1 Then
Leyenda = "mil "
End If
Case 5
If cen + dec + uni >= 1 Then
Leyenda = ""
End If
End Select

co1 = co1 + 1
TFNumero = TFNumero + letra3 + letra2 + letra1 + Leyenda

Leyenda = ""
letra1 = ""
letra2 = ""
letra3 = ""
Loop

NumLet = TFNumero

End Function

Private Function Centena(ByVal uni As Integer, ByVal dec As Integer, _
ByVal cen As Integer) As String
Dim cTexto As String

Select Case cen
Case 1
If dec + uni = 0 Then
cTexto = "cien "
Else
cTexto = "ciento "
End If
Case 2: cTexto = "doscientos "
Case 3: cTexto = "trescientos "
Case 4: cTexto = "cuatrocientos "
Case 5: cTexto = "quinientos "
Case 6: cTexto = "seiscientos "
Case 7: cTexto = "setecientos "
Case 8: cTexto = "ochocientos "
Case 9: cTexto = "novecientos "
Case Else: cTexto = ""
End Select
Centena = cTexto

End Function

Private Function Decena(ByVal uni As Integer, ByVal dec As Integer) As String
Dim cTexto As String

Select Case dec
Case 1:
Select Case uni
Case 0: cTexto = "diez "
Case 1: cTexto = "once "
Case 2: cTexto = "doce "
Case 3: cTexto = "trece "
Case 4: cTexto = "catorce "
Case 5: cTexto = "quince "
Case 6 To 9: cTexto = "dieci"
End Select
Case 2:
If uni = 0 Then
cTexto = "veinte "
ElseIf uni > 0 Then
cTexto = "veinti"
End If
Case 3: cTexto = "treinta "
Case 4: cTexto = "cuarenta "
Case 5: cTexto = "cincuenta "
Case 6: cTexto = "sesenta "
Case 7: cTexto = "setenta "
Case 8: cTexto = "ochenta "
Case 9: cTexto = "noventa "
Case Else: cTexto = ""
End Select

If uni > 0 And dec > 2 Then cTexto = cTexto + "y "

Decena = cTexto

End Function

Private Function Unidad(ByVal uni As Integer, ByVal dec As Integer) As String
Dim cTexto As String

If dec <> 1 Then
Select Case uni
Case 1: cTexto = "un "
Case 2: cTexto = "dos "
Case 3: cTexto = "tres "
Case 4: cTexto = "cuatro "
Case 5: cTexto = "cinco "
End Select
End If
Select Case uni
Case 6: cTexto = "seis "
Case 7: cTexto = "siete "
Case 8: cTexto = "ocho "
Case 9: cTexto = "nueve "
End Select

Unidad = cTexto

End Function

'Funcion que convierte al plural el argumento pasado
Private Function Plural(ByVal Palabra As String) As String
Dim pos As Integer
Dim strPal As String

If Len(Trim(Palabra)) > 0 Then
pos = InStr(1, "aeiou", Right(Palabra, 1), vbTextCompare)
If pos > 0 Then
strPal = Palabra & "s"
Else
strPal = Palabra & "es"
End If
End If
Plural = strPal

End Function

[/code:1:087abe76a0]

o descarga el archivo aqui
 
«Antes que cambien los reinos, los hombres deberán cambiar» ═╬═
 
Perfil

ByPaco
Teniente Coronel

Mensajes: 2132
Ingresó: Junio 05, 2004
Ubicación:

Conectado

Agregar como amigo

Arriba
29/Jun/05 9:26
Re: Numeros a letras

JAJA ya nos colvimos profesionales del Visual, es correcto el codigo de programacion de By Paco, solo que tambien hay que decir como se instala y que funcion estableces... (bueno al menos a los que no sepan)

En ete caso tendrias que irta a Macros, editor de visaul basic, copiar el codigo que escribio By PAco y la funcion seria =Numeros_Letras()

Donde adentro del parentesis escribes el texto o la celda de donde tomar el valor

Saludos
Luis Morales
luikb.morales@gmail.com

Altamirano Ramos, S.C.
www.contax.com.mx
 
Perfil

luikb
Sargento Primero

Mensajes: 118
Ingresó: Mayo 20, 2004
Ubicación:

No Conectado

Agregar como amigo

Arriba
29/Jun/05 13:13
Re: Numeros a letras

[quote:cefa0e4801="luikb"]JAJA ya nos colvimos profesionales del Visual, es correcto el codigo de programacion de By Paco, solo que tambien hay que decir como se instala y que funcion estableces... (bueno al menos a los que no sepan)

En ete caso tendrias que irta a Macros, editor de visaul basic, copiar el codigo que escribio By PAco y la funcion seria =Numeros_Letras()

Donde adentro del parentesis escribes el texto o la celda de donde tomar el valor

Saludos
Luis Morales
luikb.morales@gmail.com

Altamirano Ramos, S.C.
www.contax.com.mx[/quote:cefa0e4801]

para los que nodominamos esto(y muchas otras cosas mas de excel), si se copia lo que dice paco, entonces tndremos la funcion ya en nuestra pc?
sin necesidad del archivo?.
pues no tengo estudio en excel, solo lo que aprendo a diario con la practica.

saludos!
 
aprende a perdonar, pues la vida es muy corta y, no vale la pena vivir con el corazon amargado, mas bien haz las paces con aquella persona que quieres y que ahora esta alejada de ti.tu vida cambiara y viviras mas plenamente.saludos!
 
Perfil

LEALQUIQUE
Capitán Primero

Mensajes: 699
Ingresó: Mayo 18, 2004
Ubicación:

No Conectado

Agregar como amigo

Arriba
29/Jun/05 14:52

No pude revisar el Función en Visual Basic, ya que la macro se encuentra protegida con contraseña, asì que opté por bajar el archivo de ByPaco, le adecué mi formato y listo, ya funciona bien.

Gracias.
 
[color=black:5d36c7ecef][size=16:5d36c7ecef]JC@rlos[/size:5d36c7ecef][/color:5d36c7ecef] [color=grey:5d36c7ecef]El mayor conocimiento que existe, es conocerse a sí mismo[/color:5d36c7ecef]
 
Perfil

jcarlos923
Teniente

Mensajes: 332
Ingresó: Enero 09, 2005
Ubicación:

No Conectado

Agregar como amigo

Arriba
29/Jun/05 17:36
Re: Numeros a letras

[quote:9efea459e2="LEALQUIQUE"]para los que nodominamos esto(y muchas otras cosas mas de excel), si se copia lo que dice paco, entonces tndremos la funcion ya en nuestra pc?
sin necesidad del archivo?.
pues no tengo estudio en excel, solo lo que aprendo a diario con la practica.

saludos![/quote:9efea459e2]

Te servirá mucho leer este articulo de Office Online
 
«Antes que cambien los reinos, los hombres deberán cambiar» ═╬═
 
Perfil

ByPaco
Teniente Coronel

Mensajes: 2132
Ingresó: Junio 05, 2004
Ubicación:

Conectado

Agregar como amigo


Página: 1 2