Inicio de sesión

Nombre de usuario o e-mail

En línea

En este momento hay 1 usuario y 17 invitados en línea.

Convertir números a texto

última versión 20091005

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, 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)
  • UnMil permite indicar el tratamiento cuando tenemos una unidad de millar. Verdadero 1000->"un mil", Falso 1000->"mil"  

Para comprender mejor el funcionamiento tal vez unos ejemplos resulten más claros que cualquier explicación:

ejemplos generales

Ejemplos de la función combinada con otros textos

Si te resulta de gran utilidad y quieres agradecérmelo de alguna manera, siempre puedes invitarme a algo.

 

AdjuntoTamaño
NumeroaLetra20091005.rar2.99 KB
Rafa GP

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

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.

Rafa GP

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

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.

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...

MIGUEL10

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

 

 

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.

coriano

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

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.

coriano

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.

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.

coriano

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".

jasr

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?

jasr

Re: Convertir números a texto

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

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.

Pleiades

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.

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
Pleiades

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.

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.

Pleiades

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.

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.

Pleiades

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.

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.

Pleiades

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. 

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.

iguana

Re: MAYUSC

Hola disculapa la molestia esta funcion me seria de mucha ayuda pero no encuentro como aplicarla, es decir no se que cambiar en la macro para que tome los valores de donde lo necesito ni tampoco se como ejecutarla, el problema es que tampoco tengo mucho conocimiento acerca de las macros, si no es demasiada molestia me podrias enviar un archivo de que tendria que cambiar y como hacer para ejecutar la macro.

Desde ya muchisimas gracias

pacomegia

Re: MAYUSC

Aquí puedes descargar un archivo con unos ejemplos.

échale un vistazo y luego comentamos las dudas.

 

------

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

Pleiades

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.

jote_10

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
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.

jote_10

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

solid_snake

Puedes corregir esto porfa

Mira a mi me parece excelente lo que has hecho y solo te hago una pequeña observacion:
cuando coloco 1 me gustaria que apareciera "uno" en lugar del "un" que aparece normalmente
si me puedes ayudar me harias un gran favor pero si no igual se te agradece (^_^)

pacomegia

Re: Puedes corregir esto porfa

para este caso puse en la función numletra un par de argumentos (los dos últimos argumentos de la función) que controlan en género tanto de la parte entera como de la parte decimal, estos argumentos son;

UD_un_uno_a   (para la parte entera)  y    Fracc_un_uno_a (para la parte fraccionaria)
 

Si este argumento se omite, o es igual a 1, devuelve "un"

Si es igual a 2, devuelve "uno"

Si es igual a 3, devuelve "una"

 

 

------

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

PiraTec

Re: Convertir números a texto

Pacomegia.... un fenómeno!!!  un consulta.

En los valores por defecto de la fórmula no se pueden colocar valores tales como: 2 decimales, "pesos";  "centavos; "con"; 1, 1 y 1 de manera que si solo seleccionamos la celda de origen el resto de las variables la tome directamente de los valores por defecto. Gracias por la respuesta.

Y yo pensé que sabía algo de Excel!!!

pacomegia

Re: Convertir números a texto

Sí, sólo tienes que modificar ligeramente el código, que para eso lo he dejado sin proteger.

Entra en el editor de Visual Basic ( [Alt] [F11] )

después de una serie de líneas comentadas están las instrucciones que establecen los valores por defecto.

'Valores por defecto:
    If IsMissing(NumDecimales) Then NumDecimales = 0
    If IsMissing(Unidad) Then Unidad = ""
    If IsMissing(UdFracc) Then UdFracc = ""

    If IsMissing(Conexión) Then Conexión = ""
    If IsMissing(Cero) Then Cero = False
    If UD_un_uno_a = 0 Then UD_un_uno_a = 1
    If Frac_un_uno_a = 0 Then Frac_un_uno_a = 1

cambia estos valores por los que necesites, por ejemplo:

'Valores por defecto:
    If IsMissing(NumDecimales) Then NumDecimales = 2
    If IsMissing(Unidad) Then Unidad = "Pesos"
    If IsMissing(UdFracc) Then UdFracc = "centavos"

    If IsMissing(Conexión) Then Conexión = "con"
    If IsMissing(Cero) Then Cero = 1
    If UD_un_uno_a = 0 Then UD_un_uno_a = 1
    If Frac_un_uno_a = 0 Then Frac_un_uno_a = 1

 

Te recomiendo que en una línea comentada indiques que has cambiado los valores por defecto, por si en el futuro vuelves a entrar en el código recuerdes los cambios hechos ahora.

un saludo.

------

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

PiraTec

Re: Convertir números a texto

Hola, Pacomegia. He cambiado los valores que dices pero al introducir la fórmula no toma por defecto esos valores, es decir, si  solo uso la celda de referencia; la función introducida queda =PERSONAL.XLS!NumLetra(B3) al dar enter, en lugar de =PERSONAL.XLS!NumLetra(B3;2;"pesos";"centavos";"con";1;1;1) que es con la opción de rellenar manualmente todos los campos de la función.

pacomegia

pues llevas razón

pues llevas toda la razón del mundo.

Vamos a probar otra cosa:

vamos a establecer los valores por defecto a la vez que se definene los argumentos de la función:

así quedaría de esta manera:

Public Function NumLetra(Número As Double, Optional NumDecimales As Integer = 2, _
                    Optional Unidad As String = "pesos", Optional UdFracc As String = "centavos", _
                    Optional Conexión As String = "con", Optional Cero As Boolean = False, _
                    Optional UD_un_uno_a As Integer = 1, Optional Frac_un_uno_a As Integer = 1)

 

Parece que para variables tipo integer Excel sí pasa un argumento, y éste es cero, con lo que la función IsMissing no detecta que falta el argumento. Con las cadenas de texto tampoco es que falte el argumento, sino que se trataría de una cadena en blanco "".

 

Gracias por detectar este problema con los valores por defecto. Lo corregiré en el módulo y lo probaré en diferentes versiones, luego subiré una nueva versión a la web.

De momento adjunto un archivo con la función que "funciona" bien para pesos y centavos.

 

------

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

AdjuntoTamaño
EjemploPesos.xls49 KB
careli

Re: Convertir números a texto

Hola alguien me puede ayudar con algo muy sencillo. Necesito una función para convertir número a textos, estoy haciendo varias planillas de calificaciones. La nota va desde el  número  1 a 5 y al lado debe ir escrito en texto. Ej. 1   uno    

Me podrían enviar paso a paso porque no entiendo bien programación.

Desde ya muchas gracias.

pacomegia

Re: Convertir números a texto

Aquí hay un archivo con unos ejemplos

------

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

luz

Re: Convertir números a texto

hola. agradesco mucho que compartan su conocimiento. y espero no sea mucho pedir..... se podra pones 45/100 para 45 centavos?? hablo en el caso de pesos.

pacomegia

decimales como fracción

en este comentario puedes ver un ejemplo de cómo poner los decimales como 45/100

------

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

luz

Re: decimales como fracción

Gracias. Ya habia probado con esa respuesta solo que me marca error en la formula :-(,  y la verdad en excel no me se vomer mucho. el error se queda despues de 'texto1' (marcado en negrita)...... que sera??  mil gracias

pacomegia

Re: decimales como fracción

comprueba los paréntesis.

prueba por un lado cada parte de la fórmula, primero pasar a letra la parte entera y en otra celda la parte decimal. Cuando funciones bien es el momento de unirlas con la función CONCATENAR

 

parte entera (suponiendo que el número está en la celda A1 y que la función está en el libro de macros personal):
=PERSONAL.XLSB!NumLetra(ENTERO(A1)

 

con la parte decimal del número:
=CONCATENAR(TEXTO((A1-ENTERO(A1))*100;"00"); " / 100")

 

con todo a la vez:

=CONCATENAR(PERSONAL.XLSB!NumLetra(ENTERO(A1));" (";TEXTO((A1-ENTERO(A1))*100;"00");"/100)")
 

 

Prueba con esto a ver si encontramos dónde está el problema.

------

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

csvmorris

Re: Convertir números a texto

HOOLA ME FUNCIONO DE MARAVILLA ESTA NUEVA, PERO MEOCURRIO ALGO EXTRAÑO, TE PLATICO .....FORMULE MIS FORMATO REQUERIDOS, Y TODO FUE UN EXITO CON EL MACROS, PERO AL PASAR A OTRA CPU EL ARCHIVO REALIZADO Y MODIFICAR LA CANTIDAD, NO LA MODIFICA, Y ME MARCA UN ERROR......GULP... GULP A QUE SE DEBE?.......HAY ALGO ADICIONAL QUE DEBA HACER? PARA QUE FUNCIONE EN OTRA COMPUTADORA?............GRACIAS

 

FECILIDADES POR LA PAGINA ES DE GRAN UTILIDAD...

pacomegia

Re: Convertir números a texto

¿dónde guardaste la función?

Si está en el libro de macros personal sólo funciona en el mismo equipo.

Si están en el libro que enviaste a la otra máquina, debería funcionar, pero las macros deben estar habilitadas para que funcione. Revisa el nivel de seguridad por si acaso.

 

Después de probar esto coméntanos si se resolvió el problema.

------

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

MICKY-PEAP

Re: Convertir números a texto

HOLA A TODOS, POR FAVOR TENDRAN EL FILE DE EXCEL ME  LO PODRAN PASAR O DE DOEN LO PUEDO BAJAR GRACIAS.

YO LO NECESITO DE LA SIGUINET MANERA:

 

1142.63 = UN MIL CIENTO CUARENTA Y DOS CON 63/100 DOLARES AMERICANOS

Ó

1142.63 = UN MIL CIENTO CUARENTA Y DOS CON 63/100 NUEVOS SOLES

 

 SALUDOS

MIL GRACIAS

 

 

MICKY.

LIMA-PERU

 

pacomegia

Re: Convertir números a texto

el tema de los 63/100 ya estaba comentado en algún envío anterior;

se debe conseguir separando la parte entera, que es la que se convierte a texto, de la parte decimal a la que se le da el formato de fracción de 100

por ejemplo (suponiendo que el número está en la celda A5):

=CONCATENAR(PERSONAL.XLSB!NumLetra(ENTERO(A5);;;;;;;;VERDADERO);" con ";TEXTO((A5-ENTERO(A5))*100;"00");"/100 Nuevos Soles")

 

para conseguir que ponga "un mil", he incluído un nuevo parámetro en la función, lo que supone una nueva versión del archivo 20081202, para poder elegir si queremos que aparezca "un mil cuatrocientos" o "mil cuatrocientos".

 Adjunto un archivo de ejemplo.

 

------

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

AdjuntoTamaño
EjemploUnMil.xls59 KB
giovacif

Re: Convertir números a texto

Hola pacomegia mucho gusto, quiero comentarte que he seguido paso a paso este blog, y te comento que todo me ha funcionado a la perfección, el problema que he tenido es que grabo el archivo, me salgo y cuando lo quiero volver a usar me da error en la formula Y me indica que la formula tiene texto no reconocido y lo he puesto tal y como lo has indicado, será que me puedes ayudar a resolver este problemita??  Gracias y saludos.

pacomegia

Activar macros

Tiene toda la pinta de que las macros del libro están deshabilitadas.

Comprueba el nivel de seguridad.

En la versión 2007, la extensión del archivo debe ser .xlsm para indicar que el libro contiene macros.

 

Aunque se trate de una función personalizada, Excel no distingue entre esto y una macro, todo lo que sea programado en vba lo considera con el nombre genérico de "macros" y se le aplican las condiciones de seguridad.

 

prueba con esto y  me comentas si ha funcionado, o si por el contrario el problema es otro y continúa sin funcionar.

un saludo.

 

------

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

Jeison

Re: Convertir números a texto

hola como estas, duda  cuando guardaste la macros la guardaste en un excel en el cual isiste una prueba para hacerlo funcionar. ¿ al guardar e intentar utilizarlo lo isite en el mismo doc. excel o abriste uno nuevo?

 

te explico la funcion solo se puede utilizar en el archivo excel donde proyectaste la funcion si quieres hacerlo en un nuevo doc.. debes realizar el mismo procedimiento. en cada uno de ellos. bueno aqui les dejo una funcion en MN . para uqien la quiera compartir.

 

se expresa asi

5.000 = cinco mil pesos.

tal cual y lo lees. eliminando el molesto "son:" que aparese tipicamente a un principio

 

FUNCION:

 

Function PesosMN(tyCantidad As Currency) As String
Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero
Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant 'Si esta como Option Explicit
tyCantidad = Round(tyCantidad, 2)
lyCantidad = Int(tyCantidad)
lyCentavos = (tyCantidad - lyCantidad) * 100
laUnidades = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIUN", "VEINTIDOS", "VEINTITRES", "VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")
laDecenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
laCentenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")
lnNumeroBloques = 1
Do
lnPrimerDigito = 0
lnSegundoDigito = 0
lnTercerDigito = 0
lcBloque = ""
lnBloqueCero = 0
For I = 1 To 3
lnDigito = lyCantidad Mod 10
If lnDigito <> 0 Then
Select Case I
Case 1
lcBloque = " " & laUnidades(lnDigito - 1)
lnPrimerDigito = lnDigito
Case 2
If lnDigito <= 2 Then
lcBloque = " " & laUnidades((lnDigito * 10) + lnPrimerDigito - 1)
Else
lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque
End If
lnSegundoDigito = lnDigito
Case 3
lcBloque = " " & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, "CIEN", laCentenas(lnDigito - 1)) & lcBloque
lnTercerDigito = lnDigito
End Select
Else
lnBloqueCero = lnBloqueCero + 1
End If
lyCantidad = Int(lyCantidad / 10)
If lyCantidad = 0 Then
Exit For
End If
Next I
Select Case lnNumeroBloques
Case 1
PesosMN = lcBloque
Case 2
PesosMN = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & PesosMN
Case 3
PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES") & PesosMN
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
PesosMN = LCase(PesosMN & IIf(tyCantidad > 1, " PESOS ", " PESO "))
End Function

 

giovacif

Re: Convertir números a texto

Tienes toda la razón, los niveles de seguridad indican que han desabilitado los macros, me fui a opciones, los active y ya funcionan, no sabes cuanto te agradezco la ayuda porque esto me ha servido muchísimo, tengo algunas otras dudas por allí, pero tal vez más adelante te estaré molestando. De nuevo Gracias.   Saludos.

pacomegia

Re: Convertir números a texto

No es ninguna molestia

------

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

alexxxxo

: Convertir números a texto POR FAVOR

Hola, les agradecería si pudieran eneivrme el archivo para copnvertir numeros a texto con la denominación de moneda mexicana. Por ejemplo $1,567.98 = (un mil quinientos sesenta y siete pesos 98/100)

SI no es mucho pedir ojala venga con las instrucciones.Salvaran una vida.

Gracias

SAludos

Alexx

Los Mochis, Sinaloa, México

pacomegia

Re: : Convertir números a texto POR FAVOR

En este envío tienes un ejemplo

En esta misma página tienes más ejemplos e instrucciones.

------

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

JAMITH GARCIA

Re: Convertir números a texto

Este comentario ha sido movido aquí.

Visitante

Re: Convertir números a texto

Mil gracias por esta macro...de verdad me ha sido de gran ayuda, tenía un rato intentando hacerlo manual. 

Si te gusta, ¡ compártelo !

rss Suscribir por email

Encuesta

Sígueme