Ya sé Excel,
pero necesito más

El manual que
estabas buscando


Ya sé Excel,
pero necesito más

El manual avanzado
que estabas buscando
www.necesitomas.com

En línea

En este momento hay 0 usuarios y 5 invitados en línea.

Convertir números a texto

última versión 20080401

Una de las funciones que más se echa en falta en Excel es una que permitiese convertir un número en letras, me explico, que permitiese expresar un número que se le facilitase como argumento como un texto.

Especialmente indicado para esos casos de ...
total: 12021.35
asciende el presente presupuesto a la cantidad de doce mil veintiun euros con treinta y cinco céntimos

Supongo que las particularidades de cada idioma hacen que esto no sea una prioridad para Microsoft, también hacen que no sea inmediato adaptar una solución al español de las que existen en diferentes idiomas.

Hace tiempo, con la llegada del Euro, tuve que adaptar una función inicialmente pensada para pesetas (femenino y sin decimales), le añadí algunos argumentos para poder adaptarlo a cualquier unidad entera y fraccionaria, en masculino y femenino, porque el español tienen género para todas las cosas.

La conclusión de todo ello es la función que adjunto a este mensaje, y que espero que resulte de utilidad a los visitantes de esta web.

Los argumentos de la función NumLetra son los siguientes:

  • Número el número a convertir, OBLIGATORIO
  • NumDecimales número de decimales a considerar para pasar a texto. Como a veces el número provendrá de una operación, es importante este redondeo (por defecto cero)
  • Unidad nombre de la unidad principal, se pondrá detrás de la parte entera (euros, dólares, pesos, coronas, ...)
  • UdFracc nombre de la unidad fraccionaria, se pondrá detrás de los decimales (céntimos, centavos, centésimas, milésimas, ...)
  • Conexión texto que separará la parte entera de la decimal (por ejemplo, tres euros "CON" quince céntimos, cuatro "coma" tres)
  • Cero tratamiento a dar cuando tenemos un cero ( cero euros con diez céntimos, o simplemente diez céntimos) verdadero 0->"cero" falso 0->"" (por defecto: falso)
  • UD_un_uno_a género para la unidad principal (cuarenta y un, cuarenta y uno, cuarenta y una) 1: 1->"un" 2: 1->"uno" 3: 1->"una" (por defecto: 1)
  • Fracc_un_uno_a género para la unidad fraccionaria 1: 1->"un" 2: 1->"uno" 3: 1->"una" (por defecto: 1)
AdjuntoTamaño
NumeroaLetra20080401.rar2.8 KB

Re: Convertir números a texto

Quiero agradecerte esta función que me ha ayudado bastante, solo quisiera, si es posible que me dijeses, como evitar que salga la palabra "un" delante de los miles.
Ejemplo, si pongo 1250 me sale "un mil doscientos cincuenta" y querria que saliera "mil doscientos cincuenta"

Si puedes ayudarme, sería estupendo, gracias por adelantado

Rafa GP

Imagen de pacomegia

nueva versión

Acabo de corregir éste problema. Versión 20071003 (año mes día)
He añadido la fecha al final del nombre del archivo para identificar la versión.
He hecho bastantes pruebas, pero si detectas algún otro problema no dudes en comentarlo aquí para resolverlo.

------

La potencia sin control no sirve de nada.
Power is nothing without control.

Re: Convertir números a texto

Muchas gracias por arreglarlo, no se si me vas a mandar a paseo,pero ahora con la última modificación el problema es que cuando pones 1 solo sale la unidad elegida, sin embargo cuando pones 1.000.000 si sale "un millón".

Ejemplo. 1 = "euros" (euros es la unidad elegida por mí) y debiera salir "un euro"

De todas manera con lo que ya me has proporcionado, me ahorras un montón de trabajo, es muy raro que utilice solo el "1", pero si no es muy complicado para ti arreglarlo, quedaría perfecto.

De nuevo muchas gracias.

Rafa GP

Imagen de pacomegia

problema con valores por defecto

No te mando a paseo, porque con los fallos que detectas la función queda cada vez mejor.
Gracias.

Parece que había un problema con el valor por defecto del argumento UD_un_uno_a
He creado una nueva versión 20071004 que soluciona este problema.

------

La potencia sin control no sirve de nada.
Power is nothing without control.

Re: Convertir números a texto

BUENO MUCHACHOS HAY LES MANDO DES COLOMBIA
Convertir números a letras en Excel

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:

Descargamos a nuestro disco duro el archivo E10467.EXE de la dirección http://server-die.alc.upv.es/alumno/software/W95/Parches95.htm

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.

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.

Escribimos el código siguiente en el módulo:
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

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.

nota: dice el manual que es para win 95 pero en xp 2003 funciona muy bien. sallu2

Imagen de juandudas

me ahorró mucho tiempo

Muchas gracias Paco por la función.
Cada vez que tengo que cambiar los precios de una oferta, por ejemplo para aplicar un descuento de un 5% a todos los precios, antes los tenía que escribir de nuevo en letra uno por uno.
Ahora se hace sólo y sin posibilidad de equivocarte.

Sólo lamento no haberlo tenido antes, porque cada vez que me acuerdo del tiempo que he perdido con esto...

Re: Convertir números a texto

Una macro con mucha utilidad.
He probado la versión 20071004 y funciona bien, salvo para números como :
1.000.000.000 = UN MIL EUROS
2.000.000.000 = DOS MIL EUROS
1.111.111.111 = UN MIL CIENTO ONCE MILLONES CIENTO ONCE MIL CIENTO ONCE EUROS. En este caso sobraría el UN del principio.
Espero que te ayude a mejorarla.
Saludos
 
 

Imagen de pacomegia

nueva versión

He actualizado la versión de la función para corregir estos problemas que me comentas.
la versión actual es la de la fecha de hoy 20080316
Muchas gracias por tus comentarios

------

La potencia sin control no sirve de nada.
Power is nothing without control.

Re: Convertir números a texto

Coriano Soy un novato y no sé que hacer con el adjunto además me pregunto si los decimales pueden ir entre paréntesis Ejplo.    8.23   Ocho (23/100) los números que manejo van del 1 al 10 como máximo

Imagen de pacomegia

Re: Convertir números a texto

El archivo .bas contiene una función personalizada para Excel y para que funcione hay que importarlo al libro en que lo vayas a utilizar, o bien a tu libro de macros personal para que esté disponible en todos los libros que utilices.
aquí tienes más información:
http://www.necesitomas.com/node/80
 
Respecto de convertir únicamente la parte entera a texto, indica en la función que no quieres decimales (cero decimales o no pongas ningún argumento), luego hay que añadirle la parte decimal, por ejemplo, suponiendo que el número está en la celda A1, concatena los textos para conseguir el resultado deseado:
 
=CONCATENAR(NumLetra(A1);" (";TEXTO((A1-ENTERO(A1))*100;"00");"/100)")
 
Esto funciona si la función NumLetra está en el mismo libro.
si la función está en tu libro de macros personal, puede tener un aspecto parecido a este:
=CONCATENAR(PERSONAL.XLSB!NumLetra(A1);" (";TEXTO((A1-ENTERO(A1))*100;"00");"/100)")

------

La potencia sin control no sirve de nada.
Power is nothing without control.

Re: Convertir números a texto

Soy coriano nuevamente y he tenido el siguiente problema utilizo la fórmula concatenar que me indicaste pero con algunos números me sale la palabra "un" , por ejplo. 4.55 cuatro  un 55/100;     8.9 ocho un 90/100. No necesito ninguna palabra entre el entero y los decimales. Los números que manejo van desde el 1 al 10 como máximo. Es para calificaciones de notas. Desde ya gracias.

Imagen de pacomegia

Re: Convertir números a texto

Se trataba de un fallo con el redondeo, que cuando no se indicaban decimales no sumaba bien. En cualquier caso no te interesa redondear, sino utilizar la parte entera del número.
Para evitar este redondeo de la función, genera el texto sólo de la parte entera de la nota, mediante la función ENTERO
algo como esto.
=CONCATENAR(PERSONAL.XLSB!NumLetra(ENTERO(A1));" (";TEXTO((A1-ENTERO(A1))*100;"00");"/100)")
De todas formas, he puesto otra nueva versión corregida 20080401

------

La potencia sin control no sirve de nada.
Power is nothing without control.

Re: Convertir números a texto

Pacomegia eres un genio. Con tu ayuda resolví algo que no pensé que siendo un novato podía hacerlo. Muy agradecido quedó "IMPECABLE".

Re: Convertir números a texto

Cambio los parametros de decimales a 2 y no me los convierte a texto... solo convierte la parte entera.... que tengo que modificar mas?

Re: Convertir números a texto

Tampoco me aparece la unidad monetaria ni en concatenador de centimos...

Imagen de pacomegia

Re: Convertir números a texto

¿me podrías decir unos ejemplos de algunos números para los que no funciona? para tratar de detectar el fallo.
¿no te funciona nunca o es sólo en algunos casos?

------

La potencia sin control no sirve de nada.
Power is nothing without control.

Re: Convertir números a texto

Hola!
Que tal?
Soy un poco nueva en ésto de introducir datos en el macro. He intentado acceder al archivo.bas pero no me deja. Metí en el VBàsic un código de esos de los que comentais en los foros pero me pasa los números a pesos (en letras, claro) y otro me lo pasaba pero en pesetas. 
Así que me gustaría saber si alguien me podría pasar la fórmula buena para que me salga en euros, ya me entendeis, en masculino y que lea los decimales (los céntimos).
Os lo agradecería porque con tantos códigos y tantas fórmulas me estoy volviendo loca ;- |)
Muchísimas gracias.
                                                                                                                 Pleiades.

Imagen de pacomegia

unos ejemplos

Hola
Pienso que en vez de explicarlo, tal vez sea más práctico que te adjunte un archivo con algunos ejemplos.
He puesto diferentes casos, con masculinos y femeninos. Si necesitas alguna aclaración no dudes en preguntar.

------

La potencia sin control no sirve de nada.
Power is nothing without control.

AdjuntoTamaño
EjemplosNumLetra.xls61.5 KB

Re: Convertir números a texto

"Toc, toc" ... se puede?
Hola que tal!
Vale me estoy dando cuenta que soy bastante novatilla con el excel. He intentado buscar la manera de instalar las fórmulas que me pasaste en documentos que ya tenía hechos, lo he intentado en documentos nuevos, pero no hay manera, me sale un mensaje que dice " la función no tiene argumento".
Que hago para poder instalarlo en excel?
Muchas gracias por ayudarme.
Pleiades.

Imagen de pacomegia

una pregunta

Depende del uso que vayan a tener los archivos en los que utilices esta función.
¿Son archivos que sólo utilizas tú en tu ordenador, o los vas a enviar a otras personas o los compartes en la red de una oficina?
En el primer caso, si sólo lo vas a utilizar tú, yo guardaría la función en el libro de macros personal, mira en este enlace más sobre cómo crear tu libro de macros personal
 
En el segundo caso, si varias personas van a utilizar el archivo en ordenadores diferentes, tal vez lo mejor sea que guardes la función en el propio archivo, para que esté disponible allá donde vaya el libro sin tener que obligar a terceras personas a cambiar sus configuración, ni a tener que añadir cosas a su libro de macros personal.
En cualquier caso, aquí te explico qué hacer con el archivo .bas que contiene la función

------

La potencia sin control no sirve de nada.
Power is nothing without control.

Re: Convertir números a letras (Libro de macros personal)

Hola Paco Megia!
 
Mira, cuando tú lo explicas parece tan sumamente fácil que ya me había hecho ilusiones de que ya lo tenía, pero no sé lo que debo hacer mal porque no me sale la fórmula. He seguido los pasos para hacerlo en libro de macros personal:
 Herramientas>Macros>grabar macro
en la lista desplegable: Libro de macros personal
Selecciono la opción Libro de macros personal.
Escribo una letra en la celda A1, he puesto la letra A                                                                         Detengo la grabación de la macro pulsando el botón "detener gabación", que tiene una imagen de un cuadrado, como el stop de un reproductor de música.
Y ... ya está.                                                                                                                                                         Para ver la macro que he grabado, accedo al editor de Visual Basic, Alt F11 y en el explorador de proyectos aparece Personal.xls que es el libro de macros personal. Abro módulos.  Ahí sale:
Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 12/06/2008 por (mi nombre de usuario)
'
'
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "A"
    Range("A2").Select
End Sub
Pues con todo ésto, la formula no esta para poder pasar los números a letras.
Ya te dije que era un poco novata pero creo que no tiene que ser tan dificil, hay algo que me falta, seguro, verdad?
Me ayudarás por favor?
Muchas gracias por todo.
Pleiades.

Imagen de pacomegia

Ahora importa el archivo bas

Ya tienes creado el libro de macros personal. Ahora sólo necesitas poner en él la función que convierte los números a letras.
para ello tendrás que importar al libro de macros personal el archivo .bas que contiene la función.
En el editor de visual Basic, sobre el libro personal.xls, selecciona importar archivo y selecciona el archivo numeroaletra.bas que has descargado de esta página
 
suerte.

------

La potencia sin control no sirve de nada.
Power is nothing without control.

Re: Convertir números a texto

Vale!!!
Ya lo he hecho, y sabes qué?
FUNCIONA!!! Ahora solo falta que me lo pase a euros.
He marcado 123,56 y me pone ciento veinticuatro.
Yo quiero:  ciento veintitres euros con cincuenta y seis céntimos.
Bueno, ya me estoy acercando, espero conseguirlo antes de que me salgan más canas! jejeje
A ver si ésto tiene solución Paco Megia!
Muchas gracias, eres un sol.
Pleiades.

Imagen de pacomegia

argumentos

si no le pones argumentos a la función por defecto redondea sin decimales y no tiene unidades.
para que sea como dices, prueba lo siguiente:
NumLetra(celda_con_tu_número;2;"euros";"céntimos";"con")
el primer argumento es el número a convertir
el segundo argumento el número de decimales
y luego vienen las unidades para la prte entera y decimal y la palabra para unirlas
 
gracias por lo de sol, poca cosa al lado de las Péyades

------

La potencia sin control no sirve de nada.
Power is nothing without control.

Re: Convertir números a texto

Hola!
Que tal el fín de semana?
Bueno, todo lo que me has explicado ha salido bien, ahora solo falta que las letras me salgan en mayúsculas y todo será "perfecto". He intentado combinar la fórmula de pasar de "num. a letras" con la fórmula de "pasar a mayúsculas" pero  nada, no me dejaba.
Que puedo hacer paco Megia?
Muchísimas gracias.
Pleiades. 

Imagen de pacomegia

MAYUSC

En teoría si pones todo el conjunto que pasa de número a letra como argumento de la función MAYUSC sí debería pasarlo todo a mayúsculas.
algo parecido a esto, bueno, con los argumentos que necesites
=MAYUSC(PERSONAL.XLSB!NumLetra(celda_con_tu_número;2;"euros";"centimos";"con"))
 
Prueba con esto y si no funciona coméntame qué error te aparece.

------

La potencia sin control no sirve de nada.
Power is nothing without control.

Re: Convertir números a texto

FANTÁSTICO!!!
Va perfecto! Oye, muchísimas gracias por todo. Si tengo dudas sobre alguna otra cosa ya se donde acudir.
Muchas gracias por todo, eres un SOL !!!
Pleiades.

Re: Convertir números a texto

hola, estaba leyendo atentamente sus comentarios, pero les tengo una pregunta - desafío xd
 
miren el archivo adjunto,
 
como puede quedar correctamente escrito todo sin que diga las palabras como cabernicola xd ?
 
ojala puedan ayudarme, me he quebrado la cabeza en hacer lo que falta hacer
 
saludos

AdjuntoTamaño
NUMERO A LETRA.xls74.5 KB
Imagen de juandudas

¿por qué no utilizas la función?

No inventes la pólvora.
¿por qué no utilizas la función NumLetra que puedes descargar en esta página?
a mí me ha ahorrado muchísimo tiempo y me ha evitado errores.
 
un saludo.

Re: ¿por qué no utilizas la función?

gracias.
 
sé que es mas facil xq copio y pego, pero me encomendaron hacerla de esa forma, me entiendes ?
saludos


necesitomas.com en tu página principal de Google

Google

Buscar en necesitomas.com

Encuesta