Convertir numeros a letras con LAMBDA y LET en Excel

Oscar plantea una necesidad muy comun en entornos contables y administrativos: convertir cantidades numericas a su representacion en texto (por ejemplo, para cheques o facturas). Pregunta si alguien tiene una solucion con LAMBDA.

Hector responde rapidamente con una solucion completa basada en dos funciones con nombre definido que trabajan juntas. La primera, ConvierteCifra, descompone un grupo de tres digitos (centenas, decenas, unidades) usando MID y SWITCH:

``
=LAMBDA(texto,
LET(
Centena, MID(texto, 1, 1),
Decena, MID(texto, 2, 1),
Unidad, MID(texto, 3, 1),
txtCentena, SWITCH(Centena,
"1", "CIEN", "2", "DOSCIENTOS",
"3", "TRESCIENTOS", "4", "CUATROCIENTOS",
"5", "QUINIENTOS", "6", "SEISCIENTOS",
"7", "SETECIENTOS", "8", "OCHOCIENTOS",
"9", "NOVECIENTOS", ""),
txtDecena, SWITCH(Decena,
"1", SWITCH(Unidad, "0", "DIEZ",
"1", "ONCE", "2", "DOCE", "3", "TRECE",
"4", "CATORCE", "5", "QUINCE",
"6", "DIECISEIS", "7", "DIECISIETE",
"8", "DIECIOCHO", "9", "DIECINUEVE", ""),
"2", IF(Unidad="0", "VEINTE", "VEINTI"),
"3", IF(Unidad="0", "TREINTA", "TREINTA Y "),
"4", IF(Unidad="0", "CUARENTA", "CUARENTA Y "),
"5", IF(Unidad="0", "CINCUENTA", "CINCUENTA Y "),
"6", IF(Unidad="0", "SESENTA", "SESENTA Y "),
"7", IF(Unidad="0", "SETENTA", "SETENTA Y "),
"8", IF(Unidad="0", "OCHENTA", "OCHENTA Y "),
"9", IF(Unidad="0", "NOVENTA", "NOVENTA Y "), ""),
txtUnidad, SWITCH(Unidad,
"1", "UNO", "2", "DOS", "3", "TRES",
"4", "CUATRO", "5", "CINCO", "6", "SEIS",
"7", "SIETE", "8", "OCHO", "9", "NUEVE", ""),
txtCentena & " " & txtDecena & " " & txtUnidad
)
)
`

La segunda funcion, EnLetra, recibe el numero completo, lo formatea con TEXT a 9 digitos + 2 decimales, y aplica ConvierteCifra a cada grupo (millones, miles, cientos):

`
=LAMBDA(Numero,
LET(
texto, TEXT(Numero, "000000000.00"),
Millones, MID(texto, 1, 3),
Miles, MID(texto, 4, 3),
Cientos, MID(texto, 7, 3),
Decimales, MID(texto, 11, 2),
CadMillones, ConvierteCifra(Millones),
CadMiles, ConvierteCifra(Miles),
CadCientos, ConvierteCifra(Cientos),
Cadena, IF(CadMillones<>"",
IF(CadMillones="UNO",
CadMillones & " MILLON",
CadMillones & " MILLONES"), "")
& " " & IF(CadMiles<>"", CadMiles & " MIL", "")
& " " & IF(CadCientos<>"", CadCientos & " PESOS", "")
& " " & Decimales & "/100 M.N.",
TRIM(Cadena)
)
)
`

Ambas funciones se definen como nombres en el Administrador de nombres de Excel. Despues, basta con usar =EnLetra(A1) para obtener la conversion completa. Una solucion elegante que aprovecha LAMBDA y LET` para reemplazar lo que tradicionalmente requeria VBA.

El problema: convertir cifras a texto sin VBA

Óscar planteó una necesidad clásica en contabilidad y administración: convertir cantidades numéricas a su representación en letra, por ejemplo para cheques o facturas. La pregunta fue directa: si alguien tiene una solución con LAMBDA, sin recurrir a macros de VBA.

Héctor respondió con una solución completa basada en dos funciones con nombre que trabajan juntas, definidas en el Administrador de nombres de Excel. Es un buen ejemplo de cómo LAMBDA y LET sustituyen hoy a lo que antes obligaba a programar en VBA.

Función 1: convertir un grupo de tres cifras

La primera función, que podemos llamar ConvierteCifra, recibe un texto de tres dígitos (centena, decena y unidad) y lo traduce a palabras. Internamente descompone el texto con EXTRAE para separar cada dígito, y usa CAMBIAR (la función que evalúa un valor contra una lista de casos) para asignar la palabra correspondiente a las centenas, las decenas y las unidades.

La estructura, simplificada:

`` =LAMBDA(texto; LET( centena; EXTRAE(texto;1;1); decena; EXTRAE(texto;2;1); unidad; EXTRAE(texto;3;1); txtCentena; CAMBIAR(centena; "1";"CIEN"; "2";"DOSCIENTOS"; "3";"TRESCIENTOS"; "4";"CUATROCIENTOS"; "5";"QUINIENTOS"; "6";"SEISCIENTOS"; "7";"SETECIENTOS"; "8";"OCHOCIENTOS"; "9";"NOVECIENTOS"; ""); txtDecena; CAMBIAR(decena; ...); txtUnidad; CAMBIAR(unidad; ...); txtCentena & " " & txtDecena & " " & txtUnidad ) ) ``

La parte de las decenas tiene un matiz bonito: cuando la decena es 1, un CAMBIAR anidado sobre la unidad resuelve los casos especiales del español (DIEZ, ONCE, DOCE, TRECE hasta DIECINUEVE). Para el resto, distingue entre la decena redonda (VEINTE, TREINTA) y la forma con enlace (VEINTI, TREINTA Y).

Función 2: ensamblar millones, miles y cientos

La segunda función, EnLetra, recibe el número completo. Primero lo formatea con TEXTO a nueve dígitos más dos decimales, garantizando siempre la misma longitud. Después divide ese texto en grupos con EXTRAE —millones, miles, cientos y decimales— y aplica ConvierteCifra a cada bloque. Por último, une las piezas añadiendo las palabras "MILLÓN" o "MILLONES", "MIL", "PESOS" y la coletilla de los decimales.

La lógica de ensamblado se apoya en SI para omitir los bloques que quedan vacíos: si el grupo de millones da cadena, se añade con su etiqueta; si está vacío, se salta. Un RECORTAR (TRIM) final limpia los espacios sobrantes. El resultado es una cadena limpia lista para un cheque o una factura.

Con ambas funciones registradas como nombres, el uso es tan simple como escribir =EnLetra(A1) en cualquier celda.

Funciones clave

  • LAMBDA: define funciones personalizadas reutilizables, sin VBA.
  • LET: nombra los pasos intermedios (cada dígito, cada bloque) y hace legible una fórmula que de otro modo sería ilegible.
  • CAMBIAR: mapea cada dígito a su palabra, mucho más limpio que anidar decenas de SI.
  • EXTRAE: descompone el número en grupos de tres cifras.
  • TEXTO: fija la longitud del número para poder trocearlo con posiciones fijas.
  • RECORTAR: elimina los espacios sobrantes del ensamblado final.

Conclusión

Convertir números a letras era, durante años, el ejemplo de manual para justificar el uso de VBA en Excel. Este caso demuestra que ya no hace falta: con dos LAMBDA bien pensadas y CAMBIAR como traductor, la conversión vive en el propio libro, sin macros que activar ni ficheros habilitados. Es exactamente el tipo de solución que circula cada semana en la comunidad de Influexcel, donde alguien plantea una necesidad concreta y otra persona aparece con la pieza que la resuelve.

Más casos con estas funciones

Más contenido de Excel en InflueXcel