E+

ChakiArt

Excel · Datos · Automatización

Volver a Excel Lab
Excel Lab · Programación funcional

SCAN

Recorre una matriz elemento por elemento y devuelve todos los resultados acumulados generados durante el proceso.

Excel 365LAMBDAAcumulados dinámicosNivel avanzado

Qué hace

Devuelve el estado del acumulador en cada paso

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

Cómo se construye SCAN

=SCAN([valor_inicial],matriz,LAMBDA(acumulador,valor,cálculo))
[valor_inicial]Opcional

Es opcional. Define el valor con el que comienza el acumulador.

matrizObligatorio

Es el rango o matriz cuyos elementos se procesarán uno por uno.

LAMBDAObligatorio

Define cómo se actualiza el acumulador utilizando cada nuevo elemento.

La sintaxis es muy parecida a REDUCE

La gran diferencia está en el resultado: REDUCE devuelve un solo valor final, mientras que SCAN devuelve toda la secuencia de acumulados.

Ejemplo sencillo

Crear un acumulado de ventas

Supongamos que tenemos cuatro ventas y queremos conocer el acumulado después de cada registro.

Venta
Acumulado
$1,000
$1,000
$2,500
$3,500
$3,200
$6,700
$4,500
$11,200
Ejemplo 1

Utilizando un rango normal

Si las ventas están en A2:A5 podemos utilizar:

=SCAN(0,A2:A5,LAMBDA(acumulador,venta,acumulador+venta))
0

valor inicial

El acumulador comienza en cero.

A2:A5

matriz

Es el rango de ventas que SCAN recorrerá.

acumulador+venta

cálculo

Cada venta se suma al acumulado del paso anterior.

Recomendado

Utilizando una tabla de Excel

Si los datos pertenecen a una tabla llamada tblVentas, podemos utilizar la columna Venta directamente.

=SCAN(0,tblVentas[Venta],LAMBDA(acumulador,venta,acumulador+venta))
0

valor inicial

El acumulador inicia en cero.

tblVentas[Venta]

matriz

Representa todos los registros de la columna Venta.

acumulador+venta

cálculo

Genera un nuevo acumulado para cada registro.

¿Por qué usar una tabla?

Porque tblVentas[Venta] crecerá junto con la tabla. Si agregamos nuevas ventas, SCAN incluirá automáticamente esos registros en el acumulado.

Resultado

SCAN devolverá una matriz dinámica con cada resultado acumulado:

$1,000$3,500$6,700$11,200

Paso a paso

SCAN conserva todos los estados del acumulador

Venta 1

0 + 1,000

1,000

Venta 2

1,000 + 2,500

3,500

Venta 3

3,500 + 3,200

6,700

Venta 4

6,700 + 4,500

11,200

A diferencia de REDUCE, cada uno de esos resultados forma parte de la matriz final que devuelve SCAN.

Comparación

REDUCE vs SCAN

Ambas funciones utilizan un acumulador y recorren una matriz. Lo que cambia es lo que Excel devuelve al terminar.

REDUCE

Conserva el proceso internamente, pero devuelve únicamente el resultado final.

$11,200
Ver ficha

SCAN

Devuelve todos los valores que fue tomando el acumulador durante el recorrido.

$1,000 → $3,500 → $6,700 → $11,200

Aplicación práctica

Construir acumulados sin columnas auxiliares

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.

Cuándo utilizar SCAN

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.

SCAN dentro del Dashboard Matricial

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