En este grupo En todos

Foro de Excel



convertir numeros a letras en excel

Jorge
El Salvador, El Salv...
Escrito por Jorge Alberto
el 16/02/2007
Hola, necesito que me haga un gran favor, necesito saber como convertir numeros en dólares a formato de letras en excel. Ya probé con varios que encontre en internet, pero no pude. Talvez me puede facilitar la macro y explicarme los procedimientos. La verdad me  son dificiles las macros. Me urge, por su ayuda. Muchas gracias de antemano
Abraham Valencia
Computacion e informatica microsoft mv...
Escrito por Abraham Valencia
el 16/02/2007

Aqui mismo hay muchossss ejemplos:

Https://foros.emagister.com/tema-deseo_convertir_numeros_a_texto-12890-377149. Htm

Abraham

Jorge Alberto
El Salvador, El Salv...
Escrito por Jorge Alberto
el 16/02/2007

Gracias, me fue muy útil. Tenía que pasar a letras infinidad de datos. Muy amable de su parte.

Esta es la que utilice:

Aqui esta la macro corregida para  dólares y pesos mexicanos:

Para quien no sabe como pegar las macros:

Herramientas / Macros / Editor de Visual Basic

Aparecera una ventana

Se posicionan en el VBAProject del lado izquierdo del libro al que quieren agregar la macro, se van a la funcion INSERTAR / Modulo

Y del lado derecho aparecera una ventana en blanco, ahi pegan el siguiente texto:


'Funciones para convertir de números a letras
'Llamada : Letras(Número,Formato) - Formato 1-Pesos, 2-Dólares
Function Unidades(num, UNO)
Dim U
Dim Cad

U = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE")
Cad = ""
If num = 1 Then
If UNO = 1 Then
Cad = Cad & "UNO"
Else
Cad = Cad & "UN"
End If
Else
Cad = Cad & U(num - 1)
End If
Unidades = Cad
End Function

Function Decenas(num1, res)
Dim D1
D1 = Array("ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", _
"DIECIOCHO", "DIECINUEVE")
D2 = Array("DIEZ", "VEINT", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", _
"SETENTA", "OCHENTA", "NOVENTA")

If num1 > 10 And num1 < 20 Then
Cad1 = D1(num1 - 10 - 1)
Else
Cad1 = D2(num1 \ 10) - 1)
If (num1 \ 10) <> 2 Then
If res > 0 Then
Cad1 = Cad1 & " Y "
Cad1 = Cad1 & Unidades(num1 Mod 10, 0)
End If
Else
If res = 0 Then
Cad1 = Cad1 & "E"
Else
Cad1 = Cad1 & "I"
Cad1 = Cad1 & Unidades(num1 Mod 10, 0)
End If
End If
End If
Decenas = Cad1
End Function

Function Cientos(num2)
num3 = num2 \ 100
Select Case num3
Case 1
If num2 = 100 Then
cad2 = "CIEN "
Else
cad2 = "CIENTO "
End If
Case 5
cad2 = "QUINIENTOS "
Case 7
cad2 = "SETECIENTOS "
Case 9
cad2 = "NOVECIENTOS "
Case Else
cad2 = Unidades(num3, 0) & "CIENTOS "
End Select

num2 = num2 Mod 100
If num2 > 0 Then
If num2 < 10 Then
cad2 = cad2 & Unidades(num2, num2)
Else
cad2 = cad2 & Decenas(num2, num2 Mod 10)
End If
End If
Cientos = cad2
End Function

Function Miles(num4)
If (num4 >= 100) Then
cad3 = Cientos(num4)
Else
If (num4 >= 10) Then
cad3 = Decenas(num4, num4 Mod 10)
Else
cad3 = Unidades(num4, 0)
End If
End If
cad3 = cad3 & " MIL "
Miles = cad3
End Function

Function Millones(cant)
If cant = 1 Then
ter = " "
Else
ter = "ES "
End If
If (cant >= 1000) Then
cantl = cantl & Miles(cant \ 1000)
cant = cant Mod 1000
End If
If cant > 0 Then
If cant >= 100 Then
cantl = cantl & Cientos(cant)
Else
If cant >= 10 Then
cantl = cantl & Decenas(cant, cant Mod 10)
Else
cantl = cantl & Unidades(cant, 0)
End If
End If
End If
Millones = cantl & " MILLON" & ter
End Function
Function decimales(numero As Single) As Integer
Dim iaux As Integer
iaux = numero - Application. Round(numero, 2)
decimales = iaux
End Function

Function letras(cantm As Variant, ByVal mon As Integer) As String
Dim cants1 As String, num1 As Variant, num2 As Variant

num1 = cantm \ 1000000
num2 = cantm - (num1 * 1000000)

cents = (num2 * 100) Mod 100
If cents <= 9 Then
cents1 = "0" & cents
Else
cents1 = Format(cents)
End If

cantm = cantm - (cents / 100)
If cantm >= 1000000 Then
cantlm = Millones(cantm \ 1000000)
cantm = cantm Mod 1000000
End If
If cantm > 0 Then
If (cantm >= 1000) Then
cantlm = cantlm & Miles(cantm \ 1000)
cantm = cantm Mod 1000
End If
End If
If cantm > 0 Then
If cantm >= 100 Then
cantlm = cantlm & Cientos(cantm)
Else
If cantm >= 10 Then
cantlm = cantlm & Decenas(cantm, cantm Mod 10)
Else
cantlm = cantlm & Unidades(cantm, 1)
End If
End If
End If
If mon = 1 Then
letras = "(" & cantlm & " PESOS " & cents1 & "/100 M.N. )"
Else
letras = "(" & cantlm & " DOLARES " & cents1 & "/100 U.S.D. )"
End If
End Function

Sub prueba()
Dim res As String, num As Single
num = 50899697. 51
res = letras(num, 1)
End Sub

 

Al finalizar cierren y solo manden llamar la formula como :

=letras(aqui ponen la celda donde viene el numero,1) si es pesos mexicanos

y si es dolares llaman:

=letras(aqui ponen la celda donde viene el numero,2)

Si cambian la denominacion a otras monedas solo modifiquen la macro casi al final donde viene "pesos" a su moneda tambien entre comillas y quiten M.N.

 


Escrito por Mirko
el 20/02/2007

Hola a todos, necesito la posibilidad de que alguien me ayude con la siuiente formula, he logrado llegar hasta los numeros enteros pero con los decimales tengo poblemas no se como hacerlo, soy de venezuela y la moneda es el bolivar y termina en centimos: Ejp.

102,55  al convertir CIENTO DOSMIL BOLIVARES CON CINCUENTA Y CINCO CENTIMOS

Mi correo es  mcenten@cantv. Net; centenm@msn. Com

Gracias

Anexo archivo

Mirko






Hugo Medina
Perú, Perú
Escrito por Hugo Medina
el 21/02/2007

Buenas tardes......

Un favor con la formula de conversion de numeros a letras hise como lo indico pero me me bota el error de:

 "se ha detectado un nombre ambiguo: letras"

Por favor ayudeme con esto porque lo necesito con urgencia..

Gracias.....



Jorge Alberto
El Salvador, El Salv...
Escrito por Jorge Alberto
el 22/02/2007

Talvez no guardo la macro, o no puso el nombre de la moneda entre comillas


Escrito por Raul
el 02/03/2007

En realidad no necesitas demasiado el comando traduce

De hecho nolo necesitas, el excel trae otro comando que hace esa funcion.

Ploder
Madrid, España
Escrito por Ploder
el 05/03/2007

Hola.

He conseguido pasar los numeros a letras pero tengo problemas con los decimales porque los deja en numero.

¿Alguien sabe que es lo que hay que cambiar en el macro o tiene un macro mas completo?

Muchas gracias

Ploder
Madrid, España
Escrito por Ploder
el 05/03/2007

Hola yo tengo el mismo prblema.

¿Lo solucionaste? Si es asi, por favor dime como.

Gracias

Ric78 Cimadevilla
Veracruz, México
Escrito por Ric78 Cimadevilla
el 07/11/2007

Saludos

Una macro que convierta numeros a letras pero con excel 2007.


Gracias

Escrito por Arq. Francisco Borrego Flores
el 14/12/2007
"en realidad no necesitas demasiado el comando traduce
de hecho nolo necesitas, el excel trae otro comando que hace esa funcion.
"

por RAUL (Marzo 2007)



cual es ese comando pues no lo encuentro



Escrito por Arq. Francisco Borrego Flores
el 14/12/2007

Hola encontre tu formula y la pegue segun tus instrucciones

Y al querer ejecutarla me pone error de sintaxis, no podrias revisarla o darme paso a pasito las innstrucciones ya que no la puedo ejecutar.

Gracias

Escrito por Alberto
el 05/12/2008
hola encontre tu formula y la pegue segun tus instrucciones
y al querer ejecutarla me pone error de sintaxis, no podrias revisarla o darme paso a pasito las innstrucciones ya que no la puedo ejecutar.
gracias



Function letras(cantm As Variant, ByVal mon As Integer) As String
Dim cants1 As String, num1 As Variant, num2 As Variant
num1 = cantm 1000000
Jesus Felipe
Guatemala, Guatemala
Escrito por Jesus Felipe
el 04/12/2009

Asi de facil, jajaja no les entendi

Jesus Felipe
Guatemala, Guatemala
Escrito por Jesus Felipe
el 04/12/2009

Tengo una cantidad en una celda, ejemplo Q 3,500. 00 y lo quiero convertir en letras, Tres Mil quinientos con 00/100, como lo hago

Armando Montes
Foro excel emagister
Escrito por Armando Montes
el 04/12/2009

En este fichero encuentras una opcion:
https://grupos.emagister.com/documento/udf_para_convertir_numeros_a_palabras/6610-311120
Recibiras mejor atencion iniciando un nuevo debate.

Jesus Felipe
Guatemala, Guatemala
Escrito por Jesus Felipe
el 05/12/2009

No me funciono esa formula, sera porque tengo oficce 2007

Armando Montes
Foro excel emagister
Escrito por Armando Montes
el 05/12/2009

No es formula, es una macro e incluye las instrucciones.
Debes copiar el codigo a tu libro.

Antonio Samuel
Oaxaca, México
Escrito por Antonio Samuel
el 12/01/2010

Que tal jose alberto, me gustaria saber si puedes hacer lo mismo pero que las lettras se conviertan en ingles por ejemplo $25. 30 = a twenty five and 30/100. Esto se usaria para escribir cheques en ingles. Te lo agradeceria muchisimo.
saludos. Hasta pronto.

Armando Montes
Foro excel emagister
Escrito por Armando Montes
el 12/01/2010

Hola Antonio, esta es una de muchas disponibles:
https://www.ozgrid.com/VBA/ValueToWords. Htm