Media móvil dinámica: 6 enfoques con SCAN, MMULT y MAP
Un miembro de la comunidad tiene un rango con ventas mensuales y necesita generar una columna con la media móvil de los últimos 3 meses usando funciones de desbordamiento. La comunidad respondió con 6 enfoques distintos, generando una de las conversaciones más ricas del mes.
Nacho propone SCAN + PROMEDIO + TOMAR:
``
=SCAN(0;B2:B25;LAMBDA(_a;_i;PROMEDIO(TOMAR(B2:_i;-3))))
`
Elegante y conciso: SCAN recorre acumulando y en cada paso calcula el promedio de los últimos 3 valores con TOMAR(B2:_i;-3).
Leo ofrece un enfoque matricial con MMULT:
`
=LET(r;B2:B25;v;SECUENCIA(FILAS(r));h;ENFILA(v);
MMULT((v>=h)(v<h+3)(v>2);r)/3)
`
Crea una matriz booleana que selecciona ventanas de 3 elementos y usa MMULT para sumar cada ventana de golpe. Los primeros 2 valores salen 0.
La versión parametrizable de Leo permite elegir la ventana con una variable k:
`
=LET(r;B2:B25;k;3;v;SECUENCIA(FILAS(r));h;ENFILA(v);
SI(v<k;NOD();MMULT((v>=h)(v<h+k);r)/k))
`
Devuelve #N/D para los primeros períodos incompletos. Y su variante más completa incluye todos los valores:
`
=LET(r;B2:B25;v;SECUENCIA(FILAS(r));h;ENFILA(v);
b;(v>=h)(v<h+3);MMULT(b;r)/MMULT(b;r^0))
`
El truco: divide por MMULT(b;r^0) en vez de por 3, así los primeros períodos calculan con los datos disponibles.
Alejandro aporta un enfoque con MAP + TOMAR + INDICE:
`
=LET(rango;B2:B25;
MAP(rango;LAMBDA(x;PROMEDIO(TOMAR(INDICE(rango;1):x;-3)))))
`
Similar al enfoque SCAN pero construye un rango dinámico desde el inicio hasta cada celda.
Otro miembro usa MAP con constante matricial:
`
=MAP(SECUENCIA(FILAS(_gDatos));LAMBDA(i;
SI(i<3;NOD();PROMEDIO(INDICE(_gDatos;i+{0;-1;-2})))))
`
La constante {0;-1;-2}` actúa como offset para obtener los 3 valores relativos a cada posición.
Como aplicación real, Alejandro (de Colombia) compartió cómo usa la media móvil en su clínica para pronósticos epidemiológicos, aplicando la regla 68-95-99.7 para elegir el tamaño óptimo del bloque: la desviación estándar del bloque entre la de los datos crudos debe ser lo más próxima a 3 sin pasarse. Compartió datos reales de influenza estacional 1998-2018.
Más contenido de Excel en InflueXcel
- 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
- Nueva Función IMPORTTEXT TutorialNueva función IMPORTTEXT en Excel!! https://techcommunity.microsoft.com/blog/microsoft365insiderblog/bring-data-into-excel-with-the-new-impo
- ¿Columnas con nombres distintos en Power Query? Tutorial¿Columnas con nombres distintos en Power Query? Aquí tienes la solución definitiva para normalizar tus datos y evitar errores al combinar fi
- BUSCARX con valor devuelto dinámico: elige la columna con un botón o un segmentador CasoUna integrante de la comunidad planteó un reto muy habitual al trabajar con tablas de varias columnas: tiene una lista de municipios con cua
- Saldo acumulado por mes: tres enfoques (REDUCE+BYROW, PIVOTARPOR+acumulado, MMULT) CasoJuan plantea una pregunta que parece sencilla y se acaba convirtiendo en tres clases magistrales sobre cómo recorrer una matriz mes a mes. T
- Mapa de España con burbujas: ubicar variables por provincia usando coordenadas X/Y CasoEsta semana surgió una duda muy visual en el grupo: cómo mostrar dos variables por provincia en un mapa de España — una pintada en intensida
- Regularización trimestral con AGRUPARPOR y ARCHIVOMAKEARRAY: del caos a una fórmula CasoCaso fresquito de la comunidad. Juan plantea un problema contable: tiene una tabla de movimientos (Nombre, Cuenta, Importe, Fecha) y necesit
- Grado de avance por proyecto: despivotar y volver a pivotar por fecha CasoNuevo caso de la comunidad con mucho jugo para los que trabajan con reporting de proyectos. Juan plantea un problema habitual en oficinas té