Serie de Fibonacci con LAMBDA y REDUCE en una sola fórmula
Surge un reto interesante en la comunidad: generar la serie de Fibonacci con una sola fórmula de Excel, sin celdas auxiliares ni macros. Un miembro comparte su solución funcional usando LAMBDA con REDUCE para construir la secuencia de forma iterativa:
``
=LAMBDA(n;LET(
inicial;{1;1};
SECUENCIA;REDUCE(inicial;SECUENCIA(n-2);LAMBDA(arr;i;LET(
ultimo;INDICE(arr;FILAS(arr));
penultimo;INDICE(arr;FILAS(arr)-1);
nuevo;ultimo+penultimo;
APILARV(arr;nuevo))));
INDICE(SECUENCIA;n)))(40)
`
La lógica es clara: se parte de un array inicial {1;1} y REDUCE va iterando n-2 veces, extrayendo en cada paso los dos últimos valores con INDICE y FILAS, sumándolos y apilando el resultado con APILARV. Al final, INDICE(SECUENCIA;n) extrae el n-ésimo término.
La fórmula funciona perfectamente para n >= 3. Se envuelve todo en una LAMBDA` autoejecutable que recibe n como parámetro, en este caso 40 para obtener los primeros 40 números de Fibonacci.
Fibonacci en una sola celda, sin macros ni columnas auxiliares
Un reto que engancha a cualquiera que empiece con las fórmulas dinámicas: generar la serie de Fibonacci con una sola fórmula, sin celdas de apoyo ni macros. Un miembro de la comunidad compartió una solución elegante que combina LAMBDA y REDUCE.
La fórmula
`` =LAMBDA(n; LET( inicial; {1;1}; serie; REDUCE(inicial; SECUENCIA(n-2); LAMBDA(arr; i; LET( ultimo; INDICE(arr; FILAS(arr)); penultimo; INDICE(arr; FILAS(arr)-1); nuevo; ultimo + penultimo; APILARV(arr; nuevo)))); INDICE(serie; n)))(40) ``
Cómo funciona paso a paso
La idea es construir la serie de forma iterativa:
- Se parte de un array inicial
{1;1}, los dos primeros términos. REDUCEiteran-2veces (los términos que faltan). En cada vuelta,arres la serie acumulada hasta el momento.- Dentro de cada iteración se toman los dos últimos valores con
INDICEyFILAS:ultimoes el término en la última fila ypenultimoel anterior. - Se suman en
nuevoy se añade al final conAPILARV. - Al terminar,
INDICE(serie; n)extrae el término n-ésimo.
Todo va envuelto en una LAMBDA autoejecutable que recibe n como parámetro; en el ejemplo se llama con 40 para obtener los primeros cuarenta números de la serie. La fórmula funciona a partir de n igual o mayor que 3.
Funciones clave
REDUCE: el motor iterativo; acumula la serie sin bucles ni celdas auxiliares.LAMBDAautoejecutable: define y llama la función en la misma celda, pasandon.INDICEyFILAS: localizan los dos últimos términos en cada paso.APILARV: añade cada nuevo término al final del array acumulado.
Conclusión
Este ejercicio es una puerta de entrada perfecta a REDUCE: en cuanto entiendes que el acumulador puede ser un array entero que va creciendo, se abren un montón de patrones (series, recorridos, construcciones fila a fila). Pequeños retos como este, muy habituales en la comunidad de InflueXcel, enseñan más de fórmulas dinámicas que muchos tutoriales largos.
Más contenido de Excel en InflueXcel
- Cuenta clientes y cervezas en Excel 🍺 Caso "La Taberna: El Poney Pisador" (Nivel 1) Tutorial🍺 Noche cerrada en Bree. Frodo, Sam, Merry y Pippin cruzan la puerta de El Poney Pisador huyendo de los Jinetes Negros: la sala está a reven
- SUMAR.SI.CONJUNTO en acción con El Señor de los Anillos 🃏 El 21 de La Comarca TutorialLo que practicamos en este caso: • Contar cartas por palo con CONTAR.SI • Sumar valores con condiciones (SUMAR.SI / SUMAR.SI.CONJUNTO) • Apl
- Reto de Excel: El cumpleaños de Bilbo 🎂 | CONTAR.SI y SUMAR.SI desde cero (Nivel 1) TutorialEn La Comarca se celebra el cumpleaños número 111 de Bilbo Bolsón: cerveza, pasteles, fuegos artificiales… y algún curioso escondido tras el
- ¡Excel PowerQuery Hack! Conexiones con rutas relativas en 10 minutos! Tutorial¿Harto de ajustar las conexiones en PowerQuery cada vez que compartes tu archivo de Excel? 🙄 Convierte las conexiones de PowerQuery con ruta
- Mejora un 90% el rendimiento de Power Query con SQLite TutorialPower Query es una herramienta potente para consolidar, combinar y calcular datos, pero cuando trabajamos con millones de registros y calcul
- Reorganizar tablas mensuales: cruzar por persona buscando en vertical y en horizontal CasoNuevo caso interesante de la comunidad. Juan tenía varias tablas mensuales (a veces más de una en el mismo mes) y quería reorganizarlas por
- Un dato de todas las hojas, escrito una sola vez CasoEsta semana surgió en la comunidad un reto muy habitual cuando un libro tiene muchas hojas: mostrar el valor de la celda B3 de cada hoja, in
- Un índice de hojas que se genera solo: HYPERLINK en rangos desbordados CasoEsta semana surgió en la comunidad un pequeño "expediente X". Un miembro llegó tras ver un vídeo con una idea clara en la cabeza: montar una
- Reformatear un código alfanumérico al teclear: de NN1234567 a NN-12345-67 CasoEsta semana surgió en la comunidad una duda muy práctica: cómo conseguir que al escribir un código tipo NN1234567 (dos letras seguidas de si
- Reclasificación contable: duplicar cada fila con una conversión distinta por columna, en un único bloque CasoInteresante reto contable planteado esta semana por un miembro de la comunidad. Juan parte de una tabla de apuntes contables (rango C7:P10)