0valor inicial
El acumulador comienza en cero.
Recorre una matriz elemento por elemento y devuelve todos los resultados acumulados generados durante el proceso.
Qué hace
SCAN recorre todos los elementos de una matriz y conserva un acumulador, igual que REDUCE.
La diferencia es que SCAN no devuelve solamente el valor final. Devuelve también cada resultado intermedio generado durante el recorrido.
Sintaxis
=SCAN([valor_inicial],matriz,LAMBDA(acumulador,valor,cálculo))[valor_inicial]OpcionalEs opcional. Define el valor con el que comienza el acumulador.
matrizObligatorioEs el rango o matriz cuyos elementos se procesarán uno por uno.
LAMBDAObligatorioDefine cómo se actualiza el acumulador utilizando cada nuevo elemento.
La gran diferencia está en el resultado: REDUCE devuelve un solo valor final, mientras que SCAN devuelve toda la secuencia de acumulados.
Ejemplo sencillo
Supongamos que tenemos cuatro ventas y queremos conocer el acumulado después de cada registro.
Si las ventas están en A2:A5 podemos utilizar:
=SCAN(0,A2:A5,LAMBDA(acumulador,venta,acumulador+venta))0El acumulador comienza en cero.
A2:A5Es el rango de ventas que SCAN recorrerá.
acumulador+ventaCada venta se suma al acumulado del paso anterior.
Si los datos pertenecen a una tabla llamada tblVentas, podemos utilizar la columna Venta directamente.
=SCAN(0,tblVentas[Venta],LAMBDA(acumulador,venta,acumulador+venta))0El acumulador inicia en cero.
tblVentas[Venta]Representa todos los registros de la columna Venta.
acumulador+ventaGenera un nuevo acumulado para cada registro.
Porque tblVentas[Venta] crecerá junto con la tabla. Si agregamos nuevas ventas, SCAN incluirá automáticamente esos registros en el acumulado.
SCAN devolverá una matriz dinámica con cada resultado acumulado:
Paso a paso
Venta 1
0 + 1,0001,000
Venta 2
1,000 + 2,5003,500
Venta 3
3,500 + 3,2006,700
Venta 4
6,700 + 4,50011,200
A diferencia de REDUCE, cada uno de esos resultados forma parte de la matriz final que devuelve SCAN.
Comparación
Ambas funciones utilizan un acumulador y recorren una matriz. Lo que cambia es lo que Excel devuelve al terminar.
Conserva el proceso internamente, pero devuelve únicamente el resultado final.
$11,200Devuelve todos los valores que fue tomando el acumulador durante el recorrido.
$1,000 → $3,500 → $6,700 → $11,200Aplicación práctica
SCAN resulta especialmente útil cuando necesitamos generar una columna completa de acumulados a partir de una matriz dinámica.
=SCAN(0,tblVentas[Venta],LAMBDA(total,venta,total+venta))Si la tabla crece, la matriz derramada de acumulados también puede crecer automáticamente.
Crear ventas acumuladas por registro o período.
Calcular saldos progresivos.
Generar secuencias donde cada valor depende del resultado anterior.
Evitar columnas auxiliares para acumulados dinámicos.
Funciones relacionadas
En el Dashboard Matricial podemos utilizar SCAN para generar acumulados mensuales y otras secuencias que deben crecer automáticamente junto con nuestros datos.
Es especialmente útil cuando necesitamos conservar todos los resultados intermedios y posteriormente utilizarlos en gráficos o indicadores.
Ver Dashboard Matricial