Foros del Web » Soporte técnico » Ofimática »

Pasar de números a letras en Excel

Estas en el tema de Pasar de números a letras en Excel en el foro de Ofimática en Foros del Web. Información sacada de http://www.galeon.com/ortihuela/trucosexcel.htm Ya que mediante el formato de Excel no es posible, la solución puede ser crear un módulo de Visual Basic que ...

  #1 (permalink)  
Antiguo 07/11/2005, 11:16
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 3 meses
Puntos: 61
Pasar de números a letras en Excel


Información sacada de http://www.galeon.com/ortihuela/trucosexcel.htm

Ya que mediante el formato de Excel no es posible, la solución puede ser crear un módulo de Visual Basic que nos realice el trabajo. Afortunadamente, Microsoft nos ofrece otra alternativa en su página web del área de descarga de Excel. Se trata de utilizar una función llamada Recibo, que se encuentra en una librería dinámica y que puede llamarse desde Excel definiendo una función.

Veamos los pasos a seguir:

1. Descargamos a nuestro disco duro el archivo E10467.EXE de la dirección http://www.microsoft.com/spain/suppo...les/E10467.EXE (Ya no va esa dirección. Está disponible como adjunto de este archivo)
2. El archivo E10467.EXE contiene dos archivos empaquetados: DLLTCAST.DLL y E10467.DOC. El primero es la librería dinámica que contiene la función Recibo y el segundo es un archivo de Word con las instrucciones para utilizar en Excel la función. Ejecutamos el archivo E10467.EXE y copiamos el archivo DLLTCAST.DLL a la carpeta c:\windows\system de nuestro disco duro.
3. Arrancamos Excel y en un nuevo libro o en el que necesitemos utilizar la conversión de números a letras, insertamos un nuevo módulo de Visual Basic. En Excel 2000 mediante el menú Herramientas--Macro--Editor de Visual Basic y a continuación ejecutando en este editor el comando Insertar--Módulo.
4. Escribimos el código siguiente en el módulo:
Código:
 Declare Sub Recibo Lib "dlltcast.dll" (cifra As Long, ByVal texto As String)
          Function letras(minumero)
          Dim texto As String * 255
          Dim cifra As Long
          texto = String(255, 0)
          cifra = CLng(minumero)
          Call Recibo(cifra, texto)
          letras = texto
          End Function
5. Guardamos el libro de trabajo y cerramos el editor de Visual Basic. Probamos a utilizar la función en la hoja de cálculo en la que hemos definido la función escribiendo =letra(Número). Siendo número un valor numérico o una referencia de celda que contenga un número. Por ejemplo: =letra(56789) o =letra(B2).

En el archivo de Word E10467.DOC podemos ver la forma de utilizar la función desde cualquier hoja de cálculo sin tener que definirla nuevamente.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 30/09/2009 a las 07:30
  #2 (permalink)  
Antiguo 21/11/2005, 17:09
Avatar de bluefoxtiger  
Fecha de Ingreso: abril-2004
Mensajes: 473
Antigüedad: 20 años
Puntos: 0
Buen dato. El link no funciona
  #3 (permalink)  
Antiguo 21/11/2005, 17:45
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 3 meses
Puntos: 61
Y no se ve el archivo que dejé adjunto en el mensaje? Voy a hver si lo habilitan...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #4 (permalink)  
Antiguo 21/11/2005, 20:43
Avatar de Apolo
Colaborador
 
Fecha de Ingreso: abril-2003
Ubicación: ubicado
Mensajes: 7.961
Antigüedad: 21 años
Puntos: 109
Cita:
Iniciado por bluefoxtiger
Buen dato. El link no funciona
Creo que ahora sí funciona.
__________________
Planes VPS en el mundo > DirectorioVPS
Visita los foros de hosting de ComunidadHosting
  #5 (permalink)  
Antiguo 11/01/2006, 09:58
 
Fecha de Ingreso: enero-2006
Mensajes: 2
Antigüedad: 18 años, 3 meses
Puntos: 0
Convertir numeros a letras en Excel 2000

Hola Amigo

Soy Chileno, use tu codigo a la perfeccion, pero , aca no escribimos de la forma de ustedes los numeros, por ejemplo :

$ 1.590.-

En España son : un mil quinientas noventa

En chile son : un mil quinientos noventa

Te fijas que la terminacion de " quinientas " no es igual a la chilena , bueno en tu codigo es el problema que tengo, tendras el codigo que me sirve ? te lo agradeceria.

Mi nombre es Andres Salinas
  #6 (permalink)  
Antiguo 11/01/2006, 10:00
 
Fecha de Ingreso: enero-2006
Mensajes: 2
Antigüedad: 18 años, 3 meses
Puntos: 0
Cita:
Iniciado por ass1404
Hola Amigo

Soy Chileno, use tu codigo a la perfeccion, pero , aca no escribimos de la forma de ustedes los numeros, por ejemplo :

$ 1.590.-

En España son : un mil quinientas noventa

En chile son : un mil quinientos noventa

Te fijas que la terminacion de " quinientas " no es igual a la chilena , bueno en tu codigo es el problema que tengo, tendras el codigo que me sirve ? te lo agradeceria.

Correo : [email protected]
Mi nombre es Andres Salinas
  #7 (permalink)  
Antiguo 26/01/2006, 09:56
 
Fecha de Ingreso: enero-2006
Ubicación: Chiapas, Tuxtla Gutierrez
Mensajes: 1
Antigüedad: 18 años, 2 meses
Puntos: 0
CHIDO pa´los que hablan castellano

Hey, Es Muy Buen "truco", Lastima Que Las Cantidades Salen Castellanizadas... Por Ejemplo: 2536 Sale Como: Dos Mil Quinientas Treinta Y Seis. Pero Pa´ Los Que Hablan Español Latino Seria: Dos Mil Quinietos Treinta Y Seis. Pero Es Bueno Bye.
  #8 (permalink)  
Antiguo 27/01/2006, 11:53
Colaborador
 
Fecha de Ingreso: agosto-2004
Mensajes: 1.611
Antigüedad: 19 años, 7 meses
Puntos: 47
Bueno..., abre la macro y modifica el texto en las líneas que lo requieran, le cambias la "a" por la "o" y agregas la "n" faltante en "Quinietos"

Saludos...
  #9 (permalink)  
Antiguo 08/02/2006, 12:28
 
Fecha de Ingreso: febrero-2006
Mensajes: 1
Antigüedad: 18 años, 2 meses
Puntos: 0
Como le hago para modificar el macro, y agregar 00/100 M.N. que es la terminacion para expresar una cifra en letras en mi pais mexico, ejemplo:

$1526.15
"Un mil quinientos veintiseis pesos 15/100 M.N."

Gracias!!!
  #10 (permalink)  
Antiguo 09/02/2006, 19:23
 
Fecha de Ingreso: febrero-2006
Mensajes: 1
Antigüedad: 18 años, 2 meses
Puntos: 0
Ya hice todo lo decia en los pasos pero cuando ejecuto la funcion me salta un aviso que dice #¡VALOR!.
QUe tengo que hacer para que Funcione??
Muchas Gracias
  #11 (permalink)  
Antiguo 10/02/2006, 19:21
 
Fecha de Ingreso: diciembre-2004
Mensajes: 475
Antigüedad: 19 años, 3 meses
Puntos: 4
pensaba subir el archivo con un ejemplo pero como anexo el archivo
Aqui les dejo el archivo en excel con lo antes mencionado....
cien pesos 10/100 mn
espero les serva saludos...
  #12 (permalink)  
Antiguo 11/02/2006, 06:57
 
Fecha de Ingreso: febrero-2006
Mensajes: 1
Antigüedad: 18 años, 2 meses
Puntos: 0
Números con decimales

Cita:
Iniciado por Skualo
Como le hago para modificar el macro, y agregar 00/100 M.N. que es la terminacion para expresar una cifra en letras en mi pais mexico, ejemplo:

$1526.15
"Un mil quinientos veintiseis pesos 15/100 M.N."

Gracias!!!
Hola!. La configuración de casillas que te paso ahora es para que obtengas los nombres de una cifra con decimales traducida a pesos con centavos.
Por ejemplo: 154.22 te dirá: Son pesos: ciento cincuenta y cuatro con veintidós centavos.

1·En la casilla B3 escribí un número cualquiera. Configurala para que tenga solo dos decimales.
2·En la C3 poné "=ENTERO(B3)" sin las comillas por supuesto.
3·En la D3 poné "=(B3-C3)*100"
4·En la E3 poné "Son pesos:"
5· En la F3 poné "=letras(C3)"
6· En la G3 poné "con"
7· En la H3 poné "=letras(D3)"
8· En la I3 poné "centavos"
9· Ajustá los anchos de columnas, y ocultá las columnas C y D.
10· Listo. Espero que te funcione.
  #13 (permalink)  
Antiguo 29/06/2006, 11:33
 
Fecha de Ingreso: noviembre-2004
Ubicación: Viña del Mar - Chile
Mensajes: 9
Antigüedad: 19 años, 4 meses
Puntos: 0
De acuerdo

Para el que no quiere instalar dll; delarara la funcion en un Módulo nuevo...
Herramientas > Macro> Editor de Visual Basic // Insertar Módulo
Cita:
Function num_letras(Numero As Double) As String
Dim Letras As String
Dim HuboCentavos As Boolean
Dim Decimales As Double
Decimales = Numero - Int(Numero)
Numero = Int(Numero)
Dim Numeros(90) As String
Numeros(0) = "cero"
Numeros(1) = "uno"
Numeros(2) = "dos"
Numeros(3) = "tres"
Numeros(4) = "cuatro"
Numeros(5) = "cinco"
Numeros(6) = "seis"
Numeros(7) = "siete"
Numeros(8) = "ocho"
Numeros(9) = "nueve"
Numeros(10) = "diez"
Numeros(11) = "once"
Numeros(12) = "doce"
Numeros(13) = "trece"
Numeros(14) = "catorce"
Numeros(15) = "quince"
Numeros(20) = "veinte"
Numeros(30) = "treinta"
Numeros(40) = "cuarenta"
Numeros(50) = "cincuenta"
Numeros(60) = "sesenta"
Numeros(70) = "setenta"
Numeros(80) = "ochenta"
Numeros(90) = "noventa"
Do
'*---> Centenas de Millón
If (Numero < 1000000000) And (Numero >= 100000000) Then
If (Int(Numero / 100000000) = 1) And ((Numero - (Int(Numero / 100000000) * 100000000)) < 1000000) Then
Letras = Letras & "cien millones "
Else
Select Case Int(Numero / 100000000)
Case 1
Letras = Letras & "ciento"
Case 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero / 100000000))
End Select
If (Int(Numero / 100000000) <> 1) And (Int(Numero / 100000000) <> 5) And (Int(Numero / 100000000) <> 7) And (Int(Numero / 100000000) <> 9) Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100000000) * 100000000)
End If
'*---> Decenas de Millón
If (Numero < 100000000) And (Numero >= 10000000) Then
If Int(Numero / 1000000) < 16 Then
Letras = Letras & Numeros(Int(Numero / 1000000))
Letras = Letras & " millones "
Numero = Numero - (Int(Numero / 1000000) * 1000000)
Else
Letras = Letras & Numeros(Int(Numero / 10000000) * 10)
Numero = Numero - (Int(Numero / 10000000) * 10000000)
If Numero > 1000000 Then
Letras = Letras & " y "
End If
End If
End If
'*---> Unidades de Millón
If (Numero < 10000000) And (Numero >= 1000000) Then
If Int(Numero / 1000000) = 1 Then
Letras = Letras & " un millón "
Else
Letras = Letras & Numeros(Int(Numero / 1000000))
Letras = Letras & " millones "
End If
Numero = Numero - (Int(Numero / 1000000) * 1000000)
End If
'*---> Centenas de Millar
If (Numero < 1000000) And (Numero >= 100000) Then
If (Int(Numero / 100000) = 1) And ((Numero - (Int(Numero / 100000) * 100000)) < 1000) Then
Letras = Letras & "cien mil "
Else
Select Case Int(Numero / 100000)
Case 1
Letras = Letras & "ciento"
Case 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero / 100000))
End Select
If (Int(Numero / 100000) <> 1) And (Int(Numero / 100000) <> 5) And (Int(Numero / 100000) <> 7) And (Int(Numero / 100000) <> 9) Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100000) * 100000)
End If
'*---> Decenas de Millar
If (Numero < 100000) And (Numero >= 10000) Then
If Int(Numero / 1000) < 16 Then
Letras = Letras & Numeros(Int(Numero / 1000))
Letras = Letras & " mil "
Numero = Numero - (Int(Numero / 1000) * 1000)
Else
Letras = Letras & Numeros(Int(Numero / 10000) * 10)
Numero = Numero - (Int((Numero / 10000)) * 10000)
If Numero > 1000 Then
Letras = Letras & " y "
Else
Letras = Letras & " mil "
End If
End If
End If
'*---> Unidades de Millar
If (Numero < 10000) And (Numero >= 1000) Then
If Int(Numero / 1000) = 1 Then
Letras = Letras & "un"
Else
Letras = Letras & Numeros(Int(Numero / 1000))
End If
Letras = Letras & " mil "
Numero = Numero - (Int(Numero / 1000) * 1000)
End If
'*---> Centenas
If (Numero < 1000) And (Numero > 99) Then
If (Int(Numero / 100) = 1) And ((Numero - (Int(Numero / 100) * 100)) < 1) Then
Letras = Letras & "cien "
Else
Select Case Int(Numero / 100)
Case 1
Letras = Letras & "ciento"
Case 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero / 100))
End Select
If (Int(Numero / 100) <> 1) And (Int(Numero / 100) <> 5) And (Int(Numero / 100) <> 7) And (Int(Numero / 100) <> 9) Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100) * 100)
End If
'*---> Decenas
If (Numero < 100) And (Numero > 9) Then
If Numero < 16 Then
Letras = Letras & Numeros(Int(Numero))
Numero = Numero - Int(Numero)
Else
Letras = Letras & Numeros(Int((Numero / 10)) * 10)
Numero = Numero - (Int((Numero / 10)) * 10)
If Numero > 0.99 Then
Letras = Letras & " y "
End If
End If
End If
'*---> Unidades
If (Numero < 10) And (Numero > 0.99) Then
Letras = Letras & Numeros(Int(Numero))
Numero = Numero - Int(Numero)
End If
Loop Until (Numero = 0)
'*---> Decimales
If (Decimales > 0) Then
Letras = Letras & " con "
Letras = Letras & Format(Decimales * 100, "00") & "/100 centavos"
End If
num_letras = Letras
End Function
La fórmula sería =num_letras(12345) ; o bien =num_letras(B1)
LO que no he logrado es que en la misma función coloque xxx pesos; pero eso lo tengo solucionado de la siguiente manera:

=num_letras(b1)&" pesos"

Última edición por gvenegas; 29/06/2006 a las 11:39
  #14 (permalink)  
Antiguo 07/07/2006, 12:21
 
Fecha de Ingreso: julio-2006
Mensajes: 1
Antigüedad: 17 años, 9 meses
Puntos: 0
Hola!
Porque sigo las instrucciones, y hago todo a la perfeccion y cuando le pongo =letra(B1) me pone:
#¿nombre?

Gracias!!
  #15 (permalink)  
Antiguo 07/07/2006, 15:43
 
Fecha de Ingreso: diciembre-2004
Mensajes: 475
Antigüedad: 19 años, 3 meses
Puntos: 4
Porque no tienes la funcion
  #16 (permalink)  
Antiguo 08/07/2006, 21:12
 
Fecha de Ingreso: julio-2006
Mensajes: 1
Antigüedad: 17 años, 9 meses
Puntos: 0
Cita:
Iniciado por gvenegas
Para el que no quiere instalar dll; delarara la funcion en un Módulo nuevo...
Herramientas > Macro> Editor de Visual Basic // Insertar Módulo

La fórmula sería =num_letras(12345) ; o bien =num_letras(B1)
LO que no he logrado es que en la misma función coloque xxx pesos; pero eso lo tengo solucionado de la siguiente manera:

=num_letras(b1)&" pesos"
Estimados,
hay un problema para cuando escribo 2.500.000 y 2.000.500 el cual no coloca la palabra mil en el primer caso, me podrían ayudar ?
Muchas gracias
Ejemplo
2000500
Son pesos: dos millones quinientos

2500000
Son pesos: dos millones quinientos
  #17 (permalink)  
Antiguo 19/07/2006, 17:03
 
Fecha de Ingreso: julio-2006
Mensajes: 1
Antigüedad: 17 años, 8 meses
Puntos: 0
mejorado y corregido

Function num_letras(Numero As Double) As String
Dim Letras As String
Dim HuboCentavos As Boolean
Dim Decimales As Double
Decimales = Numero - Int(Numero)
Numero = Int(Numero)
Dim Numeros(90) As String
Numeros(0) = "CERO"
Numeros(1) = "UNO"
Numeros(2) = "DOS"
Numeros(3) = "TRES"
Numeros(4) = "CUATRO"
Numeros(5) = "CINCO"
Numeros(6) = "SEIS"
Numeros(7) = "SIETE"
Numeros(8) = "OCHO"
Numeros(9) = "NUEVE"
Numeros(10) = "DIEZ"
Numeros(11) = "ONCE"
Numeros(12) = "DOCE"
Numeros(13) = "TRECE"
Numeros(14) = "CATORCE"
Numeros(15) = "QUINCE"
Numeros(16) = "DIESCISEIS"
Numeros(17) = "DIESCISIETE"
Numeros(18) = "DIESCIOCHO"
Numeros(19) = "DIESCINUEVE"
Numeros(20) = "VEINTE"
Numeros(21) = "VEINTIUNO"
Numeros(22) = "VEINTIDOS"
Numeros(23) = "VEINTITRES"
Numeros(24) = "VEINTICUATRO"
Numeros(25) = "VEINTICINCO"
Numeros(26) = "VEINTISEIS"
Numeros(27) = "VEINTISIETE"
Numeros(28) = "VEINTIOCHO"
Numeros(29) = "VEINTINUEVE"
Numeros(30) = "TREINTA"
Numeros(40) = "CUARENTA"
Numeros(50) = "CINCUENTA"
Numeros(60) = "SESENTA"
Numeros(70) = "SETENTA"
Numeros(80) = "OCHENTA"
Numeros(90) = "NOVENTA"
Do
'*---> Centenas de Millón
If (Numero < 1000000000) And (Numero >= 100000000) Then
If (Int(Numero / 100000000) = 1) And ((Numero - (Int(Numero / 100000000) * 100000000)) < 1000000) Then
Letras = Letras & "cien millones "
Else
Select Case Int(Numero / 100000000)
Case 1
Letras = Letras & "CIENTO"
Case 5
Letras = Letras & "QUINIENTOS"
Case 7
Letras = Letras & "SETECIENTOS"
Case 9
Letras = Letras & "NOVECIENTOS"
Case Else
Letras = Letras & Numeros(Int(Numero / 100000000))
End Select
If (Int(Numero / 100000000) <> 1) And (Int(Numero / 100000000) <> 5) And (Int(Numero / 100000000) <> 7) And (Int(Numero / 100000000) <> 9) Then
Letras = Letras & "CIENTOS "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100000000) * 100000000)
End If
'*---> Decenas de Millón
If (Numero < 100000000) And (Numero >= 10000000) Then
If Int(Numero / 1000000) < 16 Then
Letras = Letras & Numeros(Int(Numero / 1000000))
Letras = Letras & " MILLONES "
Numero = Numero - (Int(Numero / 1000000) * 1000000)
Else
Letras = Letras & Numeros(Int(Numero / 10000000) * 10)
Numero = Numero - (Int(Numero / 10000000) * 10000000)
If Numero > 1000000 Then
Letras = Letras & " y "
End If
End If
End If
'*---> Unidades de Millón
If (Numero < 10000000) And (Numero >= 1000000) Then
If Int(Numero / 1000000) = 1 Then
Letras = Letras & " UN MILLON "
Else
Letras = Letras & Numeros(Int(Numero / 1000000))
Letras = Letras & " MILLONES "
End If
Numero = Numero - (Int(Numero / 1000000) * 1000000)
End If
'*---> Centenas de Millar
If (Numero < 1000000) And (Numero >= 100000) Then
If (Int(Numero / 100000) = 1) And ((Numero - (Int(Numero / 100000) * 100000)) < 1000) Then
Letras = Letras & "CIEN MIL "
Else
Select Case Int(Numero / 100000)
Case 1
Letras = Letras & "CIENTO"
Case 5
Letras = Letras & "QUINIENTOS"
Case 7
Letras = Letras & "SETECIENTOS"
Case 9
Letras = Letras & "NOVECIENTOS"
Case Else
Letras = Letras & Numeros(Int(Numero / 100000))
End Select
If (Int(Numero / 100000) <> 1) And (Int(Numero / 100000) <> 5) And (Int(Numero / 100000) <> 7) And (Int(Numero / 100000) <> 9) Then
Letras = Letras & "CIENTOS "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100000) * 100000)
End If
'*---> Decenas de Millar
If (Numero < 100000) And (Numero >= 10000) Then
If Int(Numero / 1000) < 16 Then
Letras = Letras & Numeros(Int(Numero / 1000))
Letras = Letras & " MIL "
Numero = Numero - (Int(Numero / 1000) * 1000)
Else
Letras = Letras & Numeros(Int(Numero / 10000) * 10)
Numero = Numero - (Int((Numero / 10000)) * 10000)
If Numero > 1000 Then
Letras = Letras & " Y "
Else
Letras = Letras & " MIL "
End If
End If
End If
'*---> Unidades de Millar
If (Numero < 10000) And (Numero >= 1000) Then
If Int(Numero / 1000) = 1 Then
Letras = Letras & " "
Else
Letras = Letras & Numeros(Int(Numero / 1000))
End If
Letras = Letras & " MIL "
Numero = Numero - (Int(Numero / 1000) * 1000)
End If
'*---> Centenas
If (Numero < 1000) And (Numero > 99) Then
If (Int(Numero / 100) = 1) And ((Numero - (Int(Numero / 100) * 100)) < 1) Then
Letras = Letras & "CIEN "
Else
Select Case Int(Numero / 100)
Case 1
Letras = Letras & "CIENTO"
Case 5
Letras = Letras & "QUINIENTOS"
Case 7
Letras = Letras & "SETECIENTOS"
Case 9
Letras = Letras & "NOVECIENTOS"
Case Else
Letras = Letras & Numeros(Int(Numero / 100))
End Select
If (Int(Numero / 100) <> 1) And (Int(Numero / 100) <> 5) And (Int(Numero / 100) <> 7) And (Int(Numero / 100) <> 9) Then
Letras = Letras & "CIENTOS "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100) * 100)
End If
'*---> Decenas
If (Numero < 100) And (Numero > 9) Then
If Numero < 31 Then
Letras = Letras & Numeros(Int(Numero))
Numero = Numero - Int(Numero)
Else
Letras = Letras & Numeros(Int((Numero / 10)) * 10)
Numero = Numero - (Int((Numero / 10)) * 10)
If Numero > 0.99 Then
Letras = Letras & " Y "
End If
End If
End If
'*---> Unidades
If (Numero < 10) And (Numero > 0.99) Then
Letras = Letras & Numeros(Int(Numero))
Numero = Numero - Int(Numero)
End If
Loop Until (Numero = 0)
'*---> Decimales
If (Decimales >= 0) Then
Letras = Letras & " PESOS "
Letras = Letras & Format(Decimales * 100, "00") & "/100 M.N."
End If
num_letras = Letras
End Function
  #18 (permalink)  
Antiguo 20/07/2006, 07:11
Avatar de Lophophora  
Fecha de Ingreso: mayo-2005
Mensajes: 366
Antigüedad: 18 años, 10 meses
Puntos: 0
Cita:
Iniciado por carlosmys
Function num_letras(Numero As Double) As String
Dim Letras As String
Dim HuboCentavos As Boolean
Dim Decimales As Double
Decimales = Numero - Int(Numero)
.
.
.
End Function

Hola
Use tu codigo y si pongo 500000
Me pone QUINIENTOS PESOS 00/100 MN enves de QUINIENTOS MIL PESOS..

por otra parte como le puedo hacer para que se guarde el modulo y no lo tenga que insertar cada vez que abro exel.

Gracias

Saludos
__________________
P.L.U.R.
  #19 (permalink)  
Antiguo 20/07/2006, 12:36
 
Fecha de Ingreso: diciembre-2004
Mensajes: 475
Antigüedad: 19 años, 3 meses
Puntos: 4
Hola visita la siguiente web en el encontraras un ejemplo....ya practico...
saludos...
www.myweb.k25.net

Última edición por crow78; 01/12/2006 a las 14:02
  #20 (permalink)  
Antiguo 27/07/2006, 19:56
 
Fecha de Ingreso: julio-2006
Mensajes: 1
Antigüedad: 17 años, 8 meses
Puntos: 0
es facil fijate:
-en una celda le sacas el entero a tu cantidad y se la restas al mismo, cosa que te quedas con el decimal solamente.
-en otra celda hacer lo sgte a la celda del decimal :=CONCATENAR(" y 00/",TEXTO(E40,"00")) eto te dara " y 00/cantidad "
-en otra celda ya tienes logicamente la funcion =letras(numeros)
- bueno ya tienes todo.. en la celda final donde arrojaras las letras pondras lo sgte: =CONCATENAR(B40,F40," Nuevos Soles")
- En tu caso reemplazaras Nuevos Soles por tu moneda de tu pais..
- y para finalizar las celdas anteriores las formatearas en colo balnco el texto para que no se vean.

Es Todo.

Alejandro M.
  #21 (permalink)  
Antiguo 25/08/2006, 14:39
 
Fecha de Ingreso: agosto-2006
Mensajes: 2
Antigüedad: 17 años, 7 meses
Puntos: 0
buen truco compa


slaudos
  #22 (permalink)  
Antiguo 06/09/2006, 11:34
 
Fecha de Ingreso: septiembre-2006
Mensajes: 1
Antigüedad: 17 años, 7 meses
Puntos: 0
Numero A Texto

HOLA:

BAJE EL MACRO, LO INSTALE DE ACUERDO A LAS INSTRUCCIONES PERO NO FUNCIONA, YO TENGO EL 2000 EN INGLES, ALGUIEN PODRÍA INDICARME, CASI PASO POR PASO COMO INSTALARLO YA QUE ME MARCA UN ERROR Y ME DICE QUE TENGO QUE CAMBIAR LA SEGUIRDAD DEL MACRO Y ACEPTARLO, (COSA QUE YA HICE), SIN EMBARGO CUANDO PONGO LA FORMULA ME SALE #NAME? SI ALGUIEN FUERA TAN AMABLE DE AYUDARME, HE ESTADO INTENTANDO TODO LO QUE ME INDICA EL EXCEL Y NO LOGRO QUE EL NUMERO SE CONVIERTA EN TEXTO, MI CORREO ES [email protected]

Última edición por MONICA BV; 06/09/2006 a las 12:21
  #23 (permalink)  
Antiguo 07/09/2006, 09:19
Colaborador
 
Fecha de Ingreso: agosto-2004
Mensajes: 1.611
Antigüedad: 19 años, 7 meses
Puntos: 47
Asumo que la macro la has colocado en un módulo Visual Basic (en la hoja de Excel >Herramientas>Macro>Editor de VB).

1.- En la celda que deseas que aparezcan el texto, escribe "=num_letras(H2)" ; sin las comillas.

2.- En la celda H2, escribe el valor numérico que deseas convertir.

num_letras es el nombre de la función.
H2 es la celda de la que la función tomará el valor para convertirlo.

Saludos....
  #24 (permalink)  
Antiguo 07/09/2006, 14:27
 
Fecha de Ingreso: diciembre-2004
Mensajes: 475
Antigüedad: 19 años, 3 meses
Puntos: 4
ya subi nuevamente el ejemplo a mi web...
saludos...
http://www.myweb.esp.cc

Última edición por crow78; 07/09/2006 a las 14:44
  #25 (permalink)  
Antiguo 03/11/2006, 10:35
 
Fecha de Ingreso: noviembre-2006
Mensajes: 4
Antigüedad: 17 años, 5 meses
Puntos: 0
duda para euros

tengo un problema y es q e modificado vuestro macro para euros pero lo centimos de euros me los sigue poniendo en numeros, me haria alguien el favor de decirme q falta para ponerlos en letras,es q me e kedao bloqeao

este es el macro:

Function num_letras(Numero As Double) As String
Dim Letras As String
Dim HuboCentavos As Boolean
Dim Decimales As Double
Decimales = Numero - Int(Numero)
Numero = Int(Numero)
Dim Numeros(90) As String
Numeros(0) = "CERO"
Numeros(1) = "UNO"
Numeros(2) = "DOS"
Numeros(3) = "TRES"
Numeros(4) = "CUATRO"
Numeros(5) = "CINCO"
Numeros(6) = "SEIS"
Numeros(7) = "SIETE"
Numeros(8) = "OCHO"
Numeros(9) = "NUEVE"
Numeros(10) = "DIEZ"
Numeros(11) = "ONCE"
Numeros(12) = "DOCE"
Numeros(13) = "TRECE"
Numeros(14) = "CATORCE"
Numeros(15) = "QUINCE"
Numeros(16) = "DIECISEIS"
Numeros(17) = "DIECISIETE"
Numeros(18) = "DIECIOCHO"
Numeros(19) = "DIECINUEVE"
Numeros(20) = "VEINTE"
Numeros(21) = "VEINTIUNO"
Numeros(22) = "VEINTIDOS"
Numeros(23) = "VEINTITRES"
Numeros(24) = "VEINTICUATRO"
Numeros(25) = "VEINTICINCO"
Numeros(26) = "VEINTISEIS"
Numeros(27) = "VEINTISIETE"
Numeros(28) = "VEINTIOCHO"
Numeros(29) = "VEINTINUEVE"
Numeros(30) = "TREINTA"
Numeros(40) = "CUARENTA"
Numeros(50) = "CINCUENTA"
Numeros(60) = "SESENTA"
Numeros(70) = "SETENTA"
Numeros(80) = "OCHENTA"
Numeros(90) = "NOVENTA"
Do
'*---> Centenas de Millón
If (Numero < 1000000000) And (Numero >= 100000000) Then
If (Int(Numero / 100000000) = 1) And ((Numero - (Int(Numero / 100000000) * 100000000)) < 1000000) Then
Letras = Letras & "cien millones "
Else
Select Case Int(Numero / 100000000)
Case 1
Letras = Letras & "CIENTO"
Case 5
Letras = Letras & "QUINIENTOS"
Case 7
Letras = Letras & "SETECIENTOS"
Case 9
Letras = Letras & "NOVECIENTOS"
Case Else
Letras = Letras & Numeros(Int(Numero / 100000000))
End Select
If (Int(Numero / 100000000) <> 1) And (Int(Numero / 100000000) <> 5) And (Int(Numero / 100000000) <> 7) And (Int(Numero / 100000000) <> 9) Then
Letras = Letras & "CIENTOS "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100000000) * 100000000)
End If
'*---> Decenas de Millón
If (Numero < 100000000) And (Numero >= 10000000) Then
If Int(Numero / 1000000) < 16 Then
Letras = Letras & Numeros(Int(Numero / 1000000))
Letras = Letras & " MILLONES "
Numero = Numero - (Int(Numero / 1000000) * 1000000)
Else
Letras = Letras & Numeros(Int(Numero / 10000000) * 10)
Numero = Numero - (Int(Numero / 10000000) * 10000000)
If Numero > 1000000 Then
Letras = Letras & " y "
End If
End If
End If
'*---> Unidades de Millón
If (Numero < 10000000) And (Numero >= 1000000) Then
If Int(Numero / 1000000) = 1 Then
Letras = Letras & " UN MILLON "
Else
Letras = Letras & Numeros(Int(Numero / 1000000))
Letras = Letras & " MILLONES "
End If
Numero = Numero - (Int(Numero / 1000000) * 1000000)
End If
'*---> Centenas de Millar
If (Numero < 1000000) And (Numero >= 100000) Then
If (Int(Numero / 100000) = 1) And ((Numero - (Int(Numero / 100000) * 100000)) < 1000) Then
Letras = Letras & "CIEN MIL "
Else
Select Case Int(Numero / 100000)
Case 1
Letras = Letras & "CIENTO"
Case 5
Letras = Letras & "QUINIENTOS"
Case 7
Letras = Letras & "SETECIENTOS"
Case 9
Letras = Letras & "NOVECIENTOS"
Case Else
Letras = Letras & Numeros(Int(Numero / 100000))
End Select
If (Int(Numero / 100000) <> 1) And (Int(Numero / 100000) <> 5) And (Int(Numero / 100000) <> 7) And (Int(Numero / 100000) <> 9) Then
Letras = Letras & "CIENTOS "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100000) * 100000)
End If
'*---> Decenas de Millar
If (Numero < 100000) And (Numero >= 10000) Then
If Int(Numero / 1000) < 16 Then
Letras = Letras & Numeros(Int(Numero / 1000))
Letras = Letras & " MIL "
Numero = Numero - (Int(Numero / 1000) * 1000)
Else
Letras = Letras & Numeros(Int(Numero / 10000) * 10)
Numero = Numero - (Int((Numero / 10000)) * 10000)
If Numero > 1000 Then
Letras = Letras & " Y "
Else
Letras = Letras & " MIL "
End If
End If
End If
'*---> Unidades de Millar
If (Numero < 10000) And (Numero >= 1000) Then
If Int(Numero / 1000) = 1 Then
Letras = Letras & " "
Else
Letras = Letras & Numeros(Int(Numero / 1000))
End If
Letras = Letras & " MIL "
Numero = Numero - (Int(Numero / 1000) * 1000)
End If
'*---> Centenas
If (Numero < 1000) And (Numero > 99) Then
If (Int(Numero / 100) = 1) And ((Numero - (Int(Numero / 100) * 100)) < 1) Then
Letras = Letras & "CIEN "
Else
Select Case Int(Numero / 100)
Case 1
Letras = Letras & "CIENTO"
Case 5
Letras = Letras & "QUINIENTOS"
Case 7
Letras = Letras & "SETECIENTOS"
Case 9
Letras = Letras & "NOVECIENTOS"
Case Else
Letras = Letras & Numeros(Int(Numero / 100))
End Select
If (Int(Numero / 100) <> 1) And (Int(Numero / 100) <> 5) And (Int(Numero / 100) <> 7) And (Int(Numero / 100) <> 9) Then
Letras = Letras & "CIENTOS "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100) * 100)
End If
'*---> Decenas
If (Numero < 100) And (Numero > 9) Then
If Numero < 31 Then
Letras = Letras & Numeros(Int(Numero))
Numero = Numero - Int(Numero)
Else
Letras = Letras & Numeros(Int((Numero / 10)) * 10)
Numero = Numero - (Int((Numero / 10)) * 10)
If Numero > 0.99 Then
Letras = Letras & " Y "
End If
End If
End If
'*---> Unidades
If (Numero < 10) And (Numero > 0.99) Then
Letras = Letras & Numeros(Int(Numero))
Numero = Numero - Int(Numero)
End If
Loop Until (Numero = 0)
'*---> Decimales
If (Decimales > 0) Then
Letras = Letras & " CON "
Letras = Letras & Format(Decimales * 100, "00") & " €"
End If
num_letras = Letras
End Function
  #26 (permalink)  
Antiguo 02/02/2007, 18:17
 
Fecha de Ingreso: febrero-2007
Mensajes: 3
Antigüedad: 17 años, 2 meses
Puntos: 0
Gracias amigo

Cita:
Iniciado por gvenegas Ver Mensaje
Para el que no quiere instalar dll; delarara la funcion en un Módulo nuevo...
Herramientas > Macro> Editor de Visual Basic // Insertar Módulo

La fórmula sería =num_letras(12345) ; o bien =num_letras(B1)
LO que no he logrado es que en la misma función coloque xxx pesos; pero eso lo tengo solucionado de la siguiente manera:

=num_letras(b1)&" pesos"
Hey, mil gracias, la primera forma no me funcionaba, pero con este código salio perfecto, incluso elimina el problema del castellano.

Alberto
  #27 (permalink)  
Antiguo 15/02/2007, 17:38
 
Fecha de Ingreso: febrero-2007
Mensajes: 3
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Pasar de números a letras en Excel

Revise el programa y si, como alguien habia puesto antes, cuanto se colocan centenas de millar, solo pone las centenas, por ejemplo:
500000: quinientos
Ya modifique el código para que no pase, ahora pueden utilizar el siguiente, solo que yo puse unidad de "kilogramos" por que es la utilice, si quieren cambiar, solo se van al final y cambiar el texto o lo eliminan:


Function num_letras(Numero As Double) As String
Dim Letras As String
Dim HuboCentavos As Boolean
Dim Decimales As Double
Decimales = Numero - Int(Numero)
Numero = Int(Numero)
Dim Numeros(90) As String
Numeros(0) = "cero"
Numeros(1) = "un"
Numeros(2) = "dos"
Numeros(3) = "tres"
Numeros(4) = "cuatro"
Numeros(5) = "cinco"
Numeros(6) = "seis"
Numeros(7) = "siete"
Numeros(8) = "ocho"
Numeros(9) = "nueve"
Numeros(10) = "diez"
Numeros(11) = "once"
Numeros(12) = "doce"
Numeros(13) = "trece"
Numeros(14) = "catorce"
Numeros(15) = "quince"
Numeros(16) = "dieciseis"
Numeros(17) = "diecisiete"
Numeros(18) = "dieciocho"
Numeros(19) = "diecinueve"
Numeros(20) = "veinte"
Numeros(21) = "veintiun"
Numeros(22) = "veintidos"
Numeros(23) = "veintitres"
Numeros(24) = "veinticuatro"
Numeros(25) = "veinticinco"
Numeros(26) = "veintiseis"
Numeros(27) = "veintisiete"
Numeros(28) = "veintiocho"
Numeros(29) = "veintinueve"
Numeros(30) = "treinta"
Numeros(40) = "cuarenta"
Numeros(50) = "cincuenta"
Numeros(60) = "sesenta"
Numeros(70) = "setenta"
Numeros(80) = "ochenta"
Numeros(90) = "noventa"
Do
'*---> Centenas de Millón
If (Numero < 1000000000) And (Numero >= 100000000) Then
If (Int(Numero / 100000000) = 1) And ((Numero - (Int(Numero / 100000000) * 100000000)) < 1000000) Then
Letras = Letras & "cien millones "
Else
Select Case Int(Numero / 100000000)
Case 1
Letras = Letras & "ciento"
Case 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero / 100000000))
End Select
If (Int(Numero / 100000000) <> 1) And (Int(Numero / 100000000) <> 5) And (Int(Numero / 100000000) <> 7) And (Int(Numero / 100000000) <> 9) Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100000000) * 100000000)
End If
'*---> Decenas de Millón
If (Numero < 100000000) And (Numero >= 10000000) Then
If Int(Numero / 1000000) < 16 Then
Letras = Letras & Numeros(Int(Numero / 1000000))
Letras = Letras & " millones "
Numero = Numero - (Int(Numero / 1000000) * 1000000)
Else
Letras = Letras & Numeros(Int(Numero / 10000000) * 10)
Numero = Numero - (Int(Numero / 10000000) * 10000000)
If Numero > 1000000 Then
Letras = Letras & " y "
End If
End If
End If
'*---> Unidades de Millón
If (Numero < 10000000) And (Numero >= 1000000) Then
If Int(Numero / 1000000) = 1 Then
Letras = Letras & " un millon "
Else
Letras = Letras & Numeros(Int(Numero / 1000000))
Letras = Letras & " millones "
End If
Numero = Numero - (Int(Numero / 1000000) * 1000000)
End If
'*---> Centenas de Millar
If (Numero < 1000000) And (Numero >= 100000) Then
If (Int(Numero / 100000) = 1) And ((Numero - (Int(Numero / 100000) * 100000)) < 1000) Then
Letras = Letras & "cien mil "
Else
Select Case Int(Numero / 100000)
Case 1
Letras = Letras & "ciento"
Case 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero / 100000))
End Select
If (Int(Numero / 100000) <> 1) And (Int(Numero / 100000) <> 5) And (Int(Numero / 100000) <> 7) And (Int(Numero / 100000) <> 9) Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If

If (Int(Numero / 100000) = 1) And ((Numero - (Int(Numero / 100000) * 100000)) < 1000) Then
Letras = Letras & " "
Else
Select Case (Numero / 100000)
Case 2
Letras = Letras & " mil "
Case 3
Letras = Letras & " mil "
Case 4
Letras = Letras & " mil "
Case 5
Letras = Letras & " mil "
Case 6
Letras = Letras & " mil "
Case 7
Letras = Letras & " mil "
Case 8
Letras = Letras & " mil "
Case 9
Letras = Letras & " mil "
End Select
End If

If (Numero > 100000) And (Int(Numero / 1000) <> (Numero / 1000)) And ((Int((Int(Numero / 1000)) / 100)) = ((Int(Numero / 1000)) / 100)) Then
Letras = Letras & " mil "
End If

End If
Numero = Numero - (Int(Numero / 100000) * 100000)
End If
'*---> Decenas de Millar
If (Numero < 100000) And (Numero >= 10000) Then
If Int(Numero / 1000) < 16 Then
Letras = Letras & Numeros(Int(Numero / 1000))
Letras = Letras & " mil "
Numero = Numero - (Int(Numero / 1000) * 1000)
Else
Letras = Letras & Numeros(Int(Numero / 10000) * 10)
Numero = Numero - (Int((Numero / 10000)) * 10000)
If Numero > 1000 Then
Letras = Letras & " y "
Else
Letras = Letras & " mil "
End If
End If
End If
'*---> Unidades de Millar
If (Numero < 10000) And (Numero >= 1000) Then
If Int(Numero / 1000) = 1 Then
Letras = Letras & "un "
Else
Letras = Letras & Numeros(Int(Numero / 1000))
End If
Letras = Letras & " mil "
Numero = Numero - (Int(Numero / 1000) * 1000)
End If
'*---> Centenas
If (Numero < 1000) And (Numero > 99) Then
If (Int(Numero / 100) = 1) And ((Numero - (Int(Numero / 100) * 100)) < 1) Then
Letras = Letras & "cien "
Else
Select Case Int(Numero / 100)
Case 1
Letras = Letras & "ciento"
Case 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero / 100))
End Select
If (Int(Numero / 100) <> 1) And (Int(Numero / 100) <> 5) And (Int(Numero / 100) <> 7) And (Int(Numero / 100) <> 9) Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100) * 100)
End If
'*---> Decenas
If (Numero < 100) And (Numero > 9) Then
If Numero < 31 Then
Letras = Letras & Numeros(Int(Numero))
Numero = Numero - Int(Numero)
Else
Letras = Letras & Numeros(Int((Numero / 10)) * 10)
Numero = Numero - (Int((Numero / 10)) * 10)
If Numero > 0.99 Then
Letras = Letras & " y "
End If
End If
End If
'*---> Unidades
If (Numero < 10) And (Numero > 0.99) Then
Letras = Letras & Numeros(Int(Numero))
Numero = Numero - Int(Numero)
End If
Loop Until (Numero = 0)
'*---> Decimales
If (Decimales >= 0) Then
Letras = Letras & " kilogramos "
End If
num_letras = Letras
End Function
  #28 (permalink)  
Antiguo 08/03/2007, 11:52
 
Fecha de Ingreso: marzo-2007
Mensajes: 1
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Pasar de números a letras en Excel

Recargado y remasterizado, con cuatro diferentes monedas:
Saludos!

'Funciones para convertir de números a letras
'Llamada : Letras(Número,Formato) - Formato 1-Pesos, 2-Dólares, 3-Euros, 4 Francos Suizos
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 & "UN"
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", "VEINTE", "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 = 0 Then
cents1 = "00"
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
If mon = 2 Then
letras = "(" & cantlm & " DOLARES " & cents1 & "/100 U.S.D.)"
Else
If mon = 3 Then
letras = "(" & cantlm & " EUROS " & cents1 & "/100 €)"
Else
letras = "(" & cantlm & " FRANCOS SUIZOS " & cents1 & "/100 CHF)"
End If
End If
End If
End Function
  #29 (permalink)  
Antiguo 09/07/2007, 13:55
 
Fecha de Ingreso: julio-2007
Mensajes: 1
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Pasar de números a letras en Excel

buena tarde gracias por los tips de convertir numeros a letras en excel
ya logre bajar la macro para convertir numeros a letras pero en mi caso soy de guatemala pongo esta cantidad Q1500.20 en letras me pone mil quinientos pero omite los centavos...
gracias de antemano por su ayuda talvez alguien puede ayudarme
saludos
  #30 (permalink)  
Antiguo 10/07/2007, 16:33
Colaborador
 
Fecha de Ingreso: agosto-2004
Mensajes: 1.611
Antigüedad: 19 años, 7 meses
Puntos: 47
Re: Pasar de números a letras en Excel

Revive éste hilo...muy visto por cierto...
Normalmente los centavos no aparecen en texto, en México se usa que después del texto, los centavos aparecen como "20/100 M.N."; sí en Guatemala usan texto habrá que modificar la macro para los centavos aparezcan en texto.
Inténtalo; lo principal ya está mensajes arriba....

Saludos....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 16 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 14:05.