0valor inicial
El acumulador comienza en cero.
Recorre una matriz elemento por elemento y va acumulando un resultado hasta devolver un único valor final.
Qué hace
REDUCE recorre todos los elementos de una matriz y mantiene un valor acumulado mientras avanza.
En cada paso, una función LAMBDA recibe el acumulador actual y el siguiente elemento de la matriz. El resultado de ese cálculo se convierte en el nuevo acumulador.
Sintaxis
=REDUCE([valor_inicial],matriz,LAMBDA(acumulador,valor,cálculo))[valor_inicial]OpcionalEs opcional. Define el valor con el que comenzará el acumulador antes de recorrer la matriz.
matrizObligatorioEs el rango o matriz cuyos elementos se procesarán uno por uno.
LAMBDAObligatorioDefine cómo debe combinarse el acumulador con cada nuevo elemento.
El acumulador guarda el resultado parcial. Cada elemento de la matriz lo modifica hasta llegar al resultado final.
Ejemplo sencillo
Supongamos que tenemos cuatro ventas y queremos obtener el total utilizando REDUCE.
Si las ventas están en A2:A5 podemos utilizar:
=REDUCE(0,A2:A5,LAMBDA(acumulador,venta,acumulador+venta))0El acumulador comienza en cero.
A2:A5Es el rango cuyos valores recorrerá REDUCE.
acumulador+ventaCada nueva venta se suma al resultado acumulado.
Si los datos están dentro de una tabla llamada tblVentas, podemos referenciar directamente la columna Venta.
=REDUCE(0,tblVentas[Venta],LAMBDA(acumulador,venta,acumulador+venta))0El cálculo comienza desde cero.
tblVentas[Venta]Representa todos los registros de la columna Venta.
acumulador+ventaVa sumando cada venta al resultado parcial.
Porque tblVentas[Venta] se expande automáticamente cuando agregamos nuevos registros. REDUCE procesará también esas nuevas filas sin cambiar la fórmula.
REDUCE recorrerá las cuatro ventas y devolverá un único valor:
$11,200
Paso a paso
Inicio
00
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
Más posibilidades
El cálculo dentro de LAMBDA puede hacer mucho más que una suma. REDUCE puede construir resultados personalizados mientras recorre la matriz.
Contar elementos que cumplen determinadas condiciones.
Construir textos concatenados dinámicamente.
Calcular productos o acumulaciones personalizadas.
Crear lógica propia sobre matrices sin columnas auxiliares.
Otro ejemplo
Podemos hacer que el acumulador aumente únicamente cuando una venta cumple cierta condición.
=REDUCE(0,tblVentas[Venta],LAMBDA(acumulador,venta,acumulador+(venta>2000)))La expresión venta>2000 genera VERDADERO o FALSO. Dentro de esta operación, Excel puede convertir esos resultados en 1 y 0, permitiendo acumular cuántos registros cumplen la condición.
Diferencia importante
Devuelve únicamente el resultado final del acumulador.
11,200Devuelve cada uno de los resultados intermedios del acumulador.
1,000 → 3,500 → 6,700 → 11,200Cuando necesitas obtener un solo resultado a partir de una matriz.
Cuando el cálculo depende del resultado obtenido en el paso anterior.
Cuando una suma, conteo o cálculo tradicional no cubre la lógica que necesitas.
Cuando quieres construir acumuladores personalizados mediante LAMBDA.
Funciones relacionadas
Define cómo se modifica el acumulador en cada paso.
Procesa cada elemento de una matriz de manera independiente.
Mantiene el acumulador pero devuelve también todos los resultados intermedios.
REDUCE nos permitirá crear acumulaciones y cálculos personalizados sobre matrices sin depender necesariamente de columnas auxiliares.
Junto con SCAN veremos cómo la lógica de un acumulador puede producir tanto un resultado final como una secuencia completa de resultados.
Ver Dashboard Matricial