Convertir números a su equivalente en letras

Funciones diversas
convertir números a su equivalente en Letras Excel

Seguimos con nuestra serie de artículos sobre transformación de números a letras en Excel. En este artículo os desglosamos cinco funciones y os ofrecemos una comparativa de las mismas.
El archivo ha sido creado por Héctor Miguel Orozco que ha recopilado y ha dado mejora a las cinco funciones que componen dicho archivo para su mejor traducción de número a letras en Excel.
La primera de ellas es la creada por Héctor, la más completa ya que podemos obtener la traducción de números a letras hasta en Cinco idiomas diferentes [ Español, Francés, Ingles, Catalán e Italiano ] y además es muy útil para obtener resultados tanto con monedas como para unidades de medida, o simplemente texto normal.
Función Héctor Miguel Orozco
Desarrollo de la funcion ValorEnLetras
[Héctor Miguel Orozco]
Los argumentos utlizados en la función son los siguientes:
Ref_Valor: Argumento requerido [ valor el cual vamos a traducir ]

Unidad_Medida: Argumento Opcional donde utilizaremos el nombre de la moneda o medida en singular, también podemos utilizar un nombre compuesto por ejemplo para las medidas metro cuadrado además de poder utilizar: "(", "[", "{", "-" o bien encerrando el resultado "( )", "[ ]", "{ }", "- -".
e.g:


ID_Fracciones : Argumento Opcional para dos decimales y moneda o medida, lo indicaremos en Plural. Si lo dejamos en blanco entonces la parte decimal no será tomada en cuenta.
Podemos usar: Céntimos, centímetros, centavos, "/100", iniciar con "#" [ cuyo resultado será en número en número ("+ el identificador") ] y también podemos usar "ninguno" o "sin identificar" para dejarlo solamente como dos decimales sin la parte de texto.
e.g:





Id_Medida: Argumento Opcional, para algún "texto" al final como identificador de la moneda [ "M.N.", "U.S.Cy.", "€" ...]
e.g:

Idioma: Argumento opcional en que podremos utilizar el idioma que necesitemos:
- Inglés o English
- Francés o French
- Italiano o Italian
- Catalán
Podemos escribir en este argumento por ejemplo:
Inglés, English o bien poner Ing o Fr o It o Ca ya que el código busca del 1° al 3er caracteres y si decidimos dejar dicho argumento en Blanco o escribimos cualquier otro idioma, entonces el código lo interpretará como Español]
e.g:

MAY_min: Último argumento opcional con el que podremos elegir el tipo de letras:
Mayúsuclas o podemos poner May, Upper o podemos poner Up, Capitals o bien Ca, Minúsculas o podemos poner Min, Lower o Lo y Non capitals o simplemente Non
¿Y si lo queremos poner la primera letra de cada palabra en mayúscula?
Bastaria con dejar en blanco dicho argumento o con poner por ejemplo: Oración
Ademas de que si escribimos en el argumento de la funcion la palabra: Frase, nos pondrá en mayúscula solamente la primera letra de toda la expresion
Quedan exceptuadas las conjunciones
e.g:


Además la Función tiene el detalle de:
1.) Si en la celda donde introducimos nuestra cantidad para tranformalo a texto, ponemos cualquier Texto por ejemplo [ hola ] o cualquier signo [ ? / ( etc...] pues sucede lo siguiente:

2.) Si ponemos cualquier número negativo:

3.) Operar con números de 15 digitos:

4.) Y si dejamos la celda vacia:

2ª Funcion: Numero2Letra
http://www.elguille.info/vb/utilidades/cNum2Text.htm
La segunda función de Guillermo Som Cerezo MVP en Visual Basic y que todos conocemos comoel Guille, también nos puede ser útil a la hora de convertir números a letras vamos a comentar dichos argumentos para Excel:
Bien tenemos los siguientes argumentos de la función:
StrNum Argumento requerido donde se introducirá el valor a traducir.
Lo : Argumento Opcional no necesario en Excel ya que su valor por defecto es cero " 0 " y cualquier valor añadido [1, 2, 3, 4, etc...] ocasiona la pérdida de la traducciòn en letra, en la celda donde estamos transcribiendo la función.
Si ponemos cualquier número menor que " 0 " entonces nos dará error en celda: #¡VALOR! [ error de argumento o tipo de operando incorrecto]
NumDecimales: Argumento Opcional que establecerá cuantas posiciones serán incluidas en la conversión de numero a letra.
- Si establecemos menor que cero "0" nos devolverá #¡VALOR!
- Si lo omitimos nos devuelve el texto sin decimales
- Si lo incrementamos por ejemplo hasta 4 decimales .... por ejemplo ponemos lo siguiente:
100.9990 [ cien euros con novecientos noventa y nueve ] y ponemos en el argumento opcional de la función NumDecimales>> 4
nos da un resultado erróneo:
cien euros con nueve mil novecientos noventa céntimos y no es correcto ya que lo correcto es:
pagar 100 euros con noventa y nueve céntimos.
SMoneda: Argumento Opcional donde escribiremos el nombre de la moneda en Singular, este argumento va acompañado del argumento SexoMoneda el cual para la versión de [ VB ] fue creada como un argumento de Opción [ boton de opción ] y para EXCEL es un argumento de usuario con lo cual hay que prever la interactuación con la función. ( esta modificado por Héctor Miguel para el caso de los millones [ mirar archivo final de articulo])
***Omite la expresión"De" por ejemplo: Un millon Euros
Scentimos: Mismos comentarios que el argumento anterior: SMoneda.
SexoMoneda: Argumento opcional para elegir el sexo de la moneda y que hemos comentado en el argumento: SMoneda.
***si se omite ocasiona por ejemplo: Ochocientas Euros con noventa y nueve céntimos
SexoCentimos: Argumento opcional equivalente al comentado en SexoMoneda pero para los Decimales.
e.g:

3ª Función: Numeros_Letras
por Mauricio Baeza y Samuel Monajaras
La tercera función que compone dicho archivo y que os comentamos a continuación:
Consta de dos argumentos Obligatorios:
Numero: Agumento donde introduciremos el valor a traducir
Moneda: Argumento donde se introducirá la moneda y en Singular
***Solo trabaja con masculinos, por ejemplo: Ochocientos Libras
Fraccion_Letras: Argumento donde se puede especificar si lo queremos en número o en letra
- ***Si lo dejamos vacio entonces nos lo tomara como numero [ Ochocientos Pesos con 99 ]
- ***Si ponemos cualquier número ya sea positivo o negativo lo tomará como letra [ Ochocientos pesos con noventa y nueve]
- ***Si por omisión nos equivocamos y ponemos cualquier carácter distinto de un número [ dará error de argumento o operando incorrecto: #¡VALOR!
Fraccion: Argumento en el cual pondremos el texto para los decimanes y en Singular [ Centavo ]
Texto Inicial: Argumento de abertura para encerrar nuestro texto [ ***Ochocientos Pesos con noventa y nueve centavos]
Texto Final: Argumento de cierre para encerrar nuestro texto si asi lo deseamos [ ***Ochocientos euros con noventa y nueve céntimos ***]
***Podéis poner cualquier carácter [ "(", "[", "--", ...]
Estilo: Argumento Opcional que determina el estilo de nuestra traducción:
- Podemos poner el valor1: Nos lo pone en Mayúscula.
- Podemos poner el valor 2: Nos lo pone en Minúscula
- Podemos poner el valor 3: Nos pone en mayúscula la primera letra de cada palabra incluidas las conjunciones.
***Sin Valor: nos pondría mayúsculas por omisión
e.g:

4ª y 5ª Funcion: EnLetras y ConLetras
Función EnLetras publicada en el foro de Excel por Claudio Sepúlveda
Función ConLetras Publicada en el foro de Excel por Guillermo Alonso
***Desconocemos si son los autores originales.
*** Dichas funciones también están mejoradas por Héctor Miguel Orozco
***funciones muy sencillas y válidas sólo para una unidad monetaria [ el Peso] , se pueden utilizar sólo para traducir números a letras.
***Su desarrollo es muy sencillo con un único argumento obligado: El valor a traducir.
e.g:

e.g:

Descarga del archivo aqui desarrollado en este artículo
Opciones para Números a Letras (126.9 kB)
Esperamos que esta saga de Funciones os haya ayudado a comprender mejor la dificultad y complejidad que tiene el realizar la conversión números a letras como también que sobre todo os haya ayudado en vuestra necesidad y recordad NO hacer mal uso de ellas
![]()
![]()