Reducir un número a un dígito con LAMBDA recursiva y secuencia intermedia
Joan Recasens plantea un reto matemático: reducir un número a un solo dígito sumando sus cifras de forma recursiva, y además guardar toda la secuencia intermedia. Ejemplo: 654 → 6+5+4 = 15 → 1+5 = 6, mostrando 6 15 654.
Leo ofrece dos niveles de solución:
El atajo matemático para obtener solo el dígito final: basta con el módulo 9 (raíz digital):
``
=RESIDUO(A1 - 1; 9) + 1
`
Sin recursión, sin LAMBDA. RESIDUO(654-1; 9)+1 = 6. Funciona para cualquier número.
LAMBDA recursiva con secuencia completa: usa el patrón Y-combinator (LAMBDA que se pasa a sí misma) con REGEXEXTRACCION para extraer cada dígito y sumarlos:
`
=LET(
F; LAMBDA(F; x;
SI(LARGO(x) = 1; x;
APILARH(x; F(F; SUMA(--REGEXEXTRACCION(x; "."; 1))))
)
);
F(F; A1)
)
`
Para invertir la secuencia (del dígito final al número original):
`
=LET(
F; LAMBDA(F; x;
SI(LARGO(x) = 1; x;
APILARH(x; F(F; SUMA(--REGEXEXTRACCION(x; "."; 1))))
)
);
s; F(F; A1);
c; COLUMNAS(s);
INDICE(s; SECUENCIA(; c; c; -1))
)
`
Un caso que combina un truco matemático clásico (raíz digital = mod 9) con funciones LAMBDA avanzadas y REGEXEXTRACCION` para la extracción de dígitos.
Reducir un número a un solo dígito (y guardar toda la secuencia)
Joan Recasens planteó un reto con sabor matemático: reducir un número a un único dígito sumando sus cifras una y otra vez, y de paso conservar todos los pasos intermedios. Por ejemplo, 654 da 6+5+4 = 15 y luego 1+5 = 6, mostrando la secuencia 6 15 654. Leo respondió con dos niveles de solución.
El atajo matemático: la raíz digital
Si solo te interesa el dígito final, no necesitas recursión ni LAMBDA. Existe un resultado clásico: la raíz digital de un número coincide con su módulo 9 (ajustado). La fórmula cabe en una celda:
=RESIDUO(A1 - 1; 9) + 1Para 654: RESIDUO(654 - 1; 9) + 1 da 6. Funciona para cualquier número y es instantánea. El pequeño ajuste de restar 1 antes y sumar 1 después evita que los múltiplos de 9 den cero en lugar de nueve.
La versión completa: LAMBDA recursiva
Para guardar toda la secuencia, Leo usa una LAMBDA recursiva con el patrón de pasarse a sí misma como argumento, extrayendo cada dígito con REGEXEXTRACCION y sumándolos:
=LET(
F; LAMBDA(F; x;
SI(LARGO(x) = 1; x;
APILARH(x; F(F; SUMA(REGEXEXTRACCION(x; "."; 1) * 1)))
)
);
F(F; A1)
)REGEXEXTRACCION(x; "."; 1) saca cada carácter del número como texto y, al multiplicarlo por 1, lo convierte en número para poder sumarlo. La recursión se detiene cuando el resultado tiene un solo dígito (LARGO(x) = 1), y APILARH va encadenando cada paso.
Si prefieres la secuencia en orden inverso, del dígito final al número original, basta con reordenar el resultado con INDICE y una SECUENCIA descendente:
=LET(
F; LAMBDA(F; x;
SI(LARGO(x) = 1; x;
APILARH(x; F(F; SUMA(REGEXEXTRACCION(x; "."; 1) * 1)))
)
);
s; F(F; A1);
c; COLUMNAS(s);
INDICE(s; SECUENCIA(; c; c; -1))
)Funciones clave
RESIDUO: la vía rápida al dígito final mediante la raíz digital (módulo 9).LAMBDArecursiva: se pasa a sí misma para iterar sin celdas auxiliares.REGEXEXTRACCION: separa el número en dígitos individuales; multiplicando por 1 los vuelve numéricos.APILARH,INDICEySECUENCIA: construyen y reordenan la secuencia de pasos.
Conclusión
Un mismo reto y dos registros distintos: un truco de teoría de números que resuelve el dígito final en una fórmula minúscula, y una LAMBDA recursiva que documenta cada paso del camino. Saber cuándo tirar de matemáticas y cuándo de funciones avanzadas es parte del oficio, y en la comunidad de InflueXcel suelen aparecer las dos en el mismo hilo.
Más casos con estas funciones
Más contenido de Excel en InflueXcel
- Descomposición de Cholesky con matrices dinámicas: de VBA a LAMBDA+REDUCE CasoJuan Pablo lanza un reto al grupo: tiene una descomposición de Cholesky resuelta con VBA y quiere saber si se puede hacer con matrices dinám
- Funciones personalizadas en Excel: LET, LAMBDA y recursividad TutorialCómo pasar de una fórmula escrita a mano a una función propia que puedes llamar por su nombre en cualquier libro. Los tres vídeos de esta pá
- Estructurar correctamente LAMBDA con LET y parámetros opcionales CasoNuevo reto de Excel resuelto por la comunidad: un miembro está creando una función LAMBDA personalizada para calcular potencia de bombeo (fó
- Filtro multicriteria dinámico con LET, FILTRAR y LAMBDA CasoHéctor comparte con la comunidad una fórmula avanzada para filtrar una tabla de productos/servicios por múltiples criterios opcionales (clav
- Distribución equitativa con LAMBDA, REDUCE y ALEATORIO CasoHéctor plantea la necesidad de repartir un conjunto de líneas (tareas, actividades) entre varios grupos de forma equitativa y aleatoria. Ide
- Convertir números a letras con LAMBDA y LET en Excel CasoÓscar plantea una necesidad muy común en entornos contables y administrativos: convertir cantidades numéricas a su representación en texto (
- Reestructurar datos apilados con LAMBDA y PIVOTARPOR CasoUn miembro de la comunidad comparte un archivo de revisión de Seguridad Social con una tabla amplia (34 columnas x 1540 filas) en formato "a
- Excel Inventario LIFO/FIFO Técnica Avanzada con LAMBDA TutorialCómo aplicar la función recursiva en Excel para transformar los tediosos procesos de valoración de inventario, mediante los métodos LIFO y F
- BUSCARX explicado fácil TutorialDesde la sintaxis básica hasta trucos avanzados como expresiones regulares y cruce de rangos. Además, aprenderás a manejar errores y a usar
- De tabla plana a árbol con una sola fórmula: ANIDAR y las matrices anidadas de Excel CasoCon las listas y matrices en celda de la beta de Excel, una LAMBDA recursiva, ANIDAR, convierte una tabla plana en un árbol por niveles, con