Saldo acumulado por mes: tres enfoques (REDUCE+BYROW, PIVOTARPOR+acumulado, MMULT)

Juan plantea una pregunta que parece sencilla y se acaba convirtiendo en tres clases magistrales sobre cómo recorrer una matriz mes a mes.

Tiene una tabla de tesorería con conceptos en filas (Entradas, Clientes, Salidas, Proveedores…) y meses en columnas (2026-05, 2026-06, … 2028-12). Lo que quiere: que cada celda muestre el saldo acumulado hasta ese mes (enero solo enero; febrero enero+febrero; marzo enero+febrero+marzo…). Y la pregunta exacta: ¿se puede hacer aprovechando el propio PIVOTARPOR?

Solución 1 — Gerson: REDUCE + BYROW(TOMAR(...);SUMA)

Sin PIVOTARPOR. La idea es recorrer cada columna del rango y, en cada paso, tomar las primeras n columnas y sumarlas fila a fila:

``
=REDUCE(B2:B14; COLUMNA(C1:AH1)-2;
LAMBDA(j; x;
APILARH(j; BYROW(TOMAR(C2:AH14;;x); SUMA))
)
)
`

TOMAR(rango;;x) con tercer argumento positivo se queda con las primeras x columnas. BYROW(...;SUMA) las suma fila a fila, devolviendo una columna acumulada. REDUCE apila ese resultado columna a columna y genera la tabla derramada completa en una sola celda.

Solución 2 — Miki: AGRUPARPOR + columna acumulado + PIVOTARPOR

Más cercano al enfoque que pedía Juan, aunque sí usa una columna auxiliar:

1. Primero AGRUPARPOR por Concepto y mes-Año para tener los importes resumidos.
2. Añade una columna calculada con el acumulado dentro de cada concepto.
3. Aplica PIVOTARPOR sobre la matriz resultante para volver al formato tabla.

Miki avisó después que su versión daba error si se añadía una línea con valor negativo, y lo corrigió en un mensaje siguiente.

Solución 3 — Oscar: MMULT con matriz booleana

La más compacta y la que mejor responde a "una sola fórmula derramada":

`
=LET(
a; H8:H11;
u; UNICOS(a);
m; MES(J8:J11);
v; ENFILA(UNICOS(m));
APILARV(
APILARH(""; v & "-" & AÑO(J8));
APILARH(u; MMULT(N(u=ENFILA(a)); I8:I11*(m<=v)))
)
)
`

u=ENFILA(a) construye una matriz booleana de coincidencias por categoría. m<=v actúa como filtro "acumulado hasta este mes" en cada columna. El MMULT cruza ambas y produce, en una pasada, una matriz categorías × meses con los acumulados — sin SUMAR.SI.CONJUNTO ni columnas auxiliares.

---

Tres formas muy distintas de pensar el mismo problema: una con REDUCE/TOMAR direccional, otra con PIVOTARPOR y columna auxiliar, y otra con álgebra matricial pura vía MMULT`. El archivo adjunto incluye el planteamiento original de Juan y la solución corregida de Gerson.

Más contenido de Excel en InflueXcel