Catorce movimientos en la cuenta corriente en septiembre. 14.155,90 £ de entradas en cinco cobros, 12.642,85 £ de salidas en nueve pagos, un saldo inicial de 4.820,00 £ y un saldo de cierre de 6.333,05 £ que cuadra con el extracto bancario al céntimo.
El resumen de tesorería que estaba al lado informaba de que el saldo más bajo del mes fue 6.333,05 £. Que es también el saldo de cierre, y esa coincidencia es toda la señal. La alerta que debe saltar cuando el saldo baja de 1.000 £ no saltó nunca.
La cuenta tocó fondo en 627,35 £ el 10 de septiembre, la mañana en que se pagaron las nóminas.
Nada de esta hoja es un número equivocado. Todos los importes están bien. El saldo de cierre está bien. El total de entradas y el de salidas cuadran los dos con el extracto, y el movimiento neto también. Lo que pasó es que alguien ordenó el libro por importe para ver las partidas grandes — algo perfectamente razonable — y un saldo acumulado es la única columna de una hoja de cálculo en la que absolutamente todos los valores dependen del orden de las filas que tiene encima.
Qué cubre esto.
SUMA,SUMAR.SI,SUMAR.SI.CONJUNTO,SUBTOTALES,MIN,MAX,CONTAR,CONTARA,CONTAR.SI,INDICE,COINCIDIR,REDONDEARySIfuncionan en todas las versiones de este siglo.SCAN,LAMBDA,LETy las matrices desbordadas necesitan Microsoft 365 o Excel 2021, y la sección 8 dice exactamente qué líneas las necesitan. El saldo bancario es solo el ejemplo: las existencias en almacén, los días de vacaciones consumidos, las horas acumuladas contra un presupuesto y los ingresos del año en curso son la misma columna con otra unidad, y todas las trampas de abajo valen igual.
1) Catorce Movimientos y las Dos Columnas Que Cuadran
El libro está en A1:D15 — fecha en A, referencia bancaria en B, categoría en C, e importe con signo en D, cobros en positivo y pagos en negativo. El saldo inicial de 4820,00 está en F1, fuera de la tabla, y el saldo acumulado se construirá en G2:G15.
Lo del signo es la primera decisión y no es pequeña. Un libro con columnas separadas de "entradas" y "salidas" necesita =SUMA($D$2:D2)-SUMA($E$2:E2) para su saldo acumulado y todas las construcciones de este artículo se duplican de longitud; una sola columna con signo cuesta un menos en la importación y se paga sola en todas las fórmulas posteriores.
Este es el mes, con el saldo acumulado que produce el orden de fechas:
| Fila | Fecha | Referencia | Importe | Saldo |
|---|---|---|---|---|
| 2 | 01/09 | INV-2201 | 3.150,00 | 7.970,00 |
| 3 | 02/09 | DD-8841 | -1.975,00 | 5.995,00 |
| 4 | 03/09 | CRD-1190 | -86,40 | 5.908,60 |
| 5 | 05/09 | INV-2202 | 1.420,50 | 7.329,10 |
| 6 | 08/09 | DD-8842 | -312,75 | 7.016,35 |
| 7 | 09/09 | CRD-1191 | -149,00 | 6.867,35 |
| 8 | 10/09 | TRF-4410 | -6.240,00 | 627,35 |
| 9 | 11/09 | INV-2203 | 5.600,00 | 6.227,35 |
| 10 | 12/09 | CRD-1192 | -243,85 | 5.983,50 |
| 11 | 15/09 | INV-2204 | 2.080,00 | 8.063,50 |
| 12 | 16/09 | DD-8843 | -418,60 | 7.644,90 |
| 13 | 17/09 | CRD-1193 | -67,25 | 7.577,65 |
| 14 | 18/09 | TRF-4411 | -3.150,00 | 4.427,65 |
| 15 | 19/09 | INV-2205 | 1.905,40 | 6.333,05 |
Hay dos números aquí que merece la pena apuntar antes de construir nada, porque todas las comprobaciones del artículo son uno de los dos:
=SUMA($D$2:$D$15) → 1.513,05 el movimiento neto
=$F$1+SUMA($D$2:$D$15) → 6.333,05 el saldo de cierre
Un Mes de Movimientos de la Cuenta Corriente, las Catorce Filas de las Que Sale Cada Saldo Acumulado de Este Artículo
Fecha en A2:A15, referencia bancaria en B2:B15, categoría en C2:C15, importe con signo en D2:D15 — cobros en positivo, pagos en negativo. La columna D suma 1.513,05: 14.155,90 £ de entradas en cinco cobros y 12.642,85 £ de salidas en nueve pagos. El saldo inicial de 4.820,00 vive en F1, fuera de la cuadrícula, y el saldo acumulado se construye en G2:G15. El saldo de cierre es 6.333,05 y lo más bajo que llega la cuenta es 627,35, el 10 de septiembre, la mañana en que se pagan las nóminas de 6.240,00 £.
fxLas celdas con fórmulas están resaltadas en verde
Pasa el mouse sobre las celdas con fórmulas para ver la fórmula y resaltar las celdas referenciadas
🎯 Escenario: Calcula esas dos celdas antes de escribir un saldo acumulado, no después. Un saldo acumulado es una construcción con catorce oportunidades de estar mal y un número al final que se comprueba en una sola celda; si solo miras el de abajo, has construido una columna de catorce valores y has verificado uno.
2) La Cadena, y Lo Que le Hace una Ordenación
Esto es lo que teclea casi todo el mundo primero, y es lo que había en esta hoja:
G2: =$F$1+D2 → 7.970,00
G3: =G2+D3 → 5.995,00 y arrastrar hacia abajo
Saldo anterior más este movimiento. Es como funciona un libro de papel, se lee perfectamente, es rápido, y en orden de fecha es completamente correcto — la columna de arriba es exactamente la columna de la sección 1.
Entonces alguien ordena A1:G15 por Importe, de mayor a menor, para ver adónde se fue el dinero.
Excel ordena todas las columnas juntas, fórmulas incluidas, y la fórmula de cada fila sigue diciendo "la celda de encima, más mi propio importe". Así que la columna se recalcula sin un solo error, y se recalcula en el historial de saldos de un mes que nunca ocurrió:
| Orden | 1er saldo | Saldo más bajo | Saldo de cierre |
|---|---|---|---|
| Por fecha (correcto) | 7.970,00 | 627,35 | 6.333,05 |
| Por importe, de mayor a menor | 10.420,00 | 6.333,05 | 6.333,05 |
| Por importe, de menor a mayor | -1.420,00 | -7.822,85 | 6.333,05 |
Mira la última columna. Las tres cierran en 6.333,05. La suma es conmutativa, así que sumes catorce números en el orden que sumes, el total es el mismo — lo que significa que todas las conciliaciones que hace el equipo financiero cuadran, en las tres versiones, todos los meses.
Y mira la columna del medio. De mayor a menor, todo el dinero entra antes de salir, así que el saldo sube hasta 18.975,90 y solo baja al final; el valor más bajo de la columna es el último, que es el saldo de cierre. De menor a mayor, todo sale antes de que entre nada, y la hoja informa de una cuenta con 7.822,85 £ de descubierto que nunca estuvo en descubierto.
La alerta es =SI(MIN($G$2:$G$15)<1000;"RIESGO DE DESCUBIERTO";""). Contra 6.333,05 se queda callada. Contra -7.822,85 grita todos los meses hasta que alguien la apaga por pesada. Ninguna de las dos versiones está informando de nada sobre la cuenta.
🎯 Escenario: Un acumulado en cadena no está mal, está ordenado — solo significa algo mientras las filas estén en la secuencia en la que ocurrieron los hechos. Pon el criterio de orden al lado: si la columna que está junto a tu saldo acumulado es una fecha y esa fecha no es ascendente, el saldo acumulado es un adorno. La sección 11 convierte eso en una comprobación de una celda.
3) El Rango Expansivo
La construcción a la que nada de esto le afecta vuelve a deducir el saldo desde cero en cada fila:
G2: =$F$1+SUMA($D$2:D2) → 7.970,00 y arrastrar hacia abajo
G15: =$F$1+SUMA($D$2:D15) → 6.333,05
Un extremo anclado, otro relativo. Al arrastrar la fórmula el inicio del rango se queda soldado a D2 y el final sigue a la fila, así que la fila 8 suma D2:D8 y la fila 15 suma D2:D15. Los mismos catorce números que la cadena, en orden de fecha.
La diferencia es lo que pasa después:
- Ordena la tabla. Cada fila vuelve a sumar las filas que ahora tiene encima, que es exactamente lo que significa un acumulado. La columna sigue el orden nuevo honestamente, y si el orden nuevo es por importe obtienes una curva acumulada por tamaño honesta en vez de un historial de saldos corrompido. Responde a otra pregunta, pero responde a una.
- Inserta una fila en la 8.
$D$2:D8en las filas de debajo se estira sola para incluir la nueva. La cadena deja G8 en blanco, y=G8+D9lee ese blanco como cero, así que desde la fila 9 hacia abajo se pierde todo el saldo acumulado hasta ahí — la fila de nóminas dice -6.240,00 en vez de 627,35, una caída de 6.867,35 salida de la nada, sin ningún error en ninguna parte. - Borra la fila 2. El ancla
$D$2se convierte en#¡REF!en las catorce fórmulas a la vez. Es el fallo más ruidoso de este artículo, y es del bueno: te lo dice. - Filtra la tabla. A ninguna de las dos le afecta — mira la sección 5, que es una historia más larga.
El intercambio es real y la sección 10 tiene las cifras: la cadena hace una suma por fila y el rango expansivo hace una suma por fila por cada fila que tiene encima. Con catorce filas eso no es nada. Con cincuenta mil, sí.
🎯 Escenario: Usa =$F$1+SUMA($D$2:D2) por defecto y recurre a la cadena solo cuando un cronómetro de recálculo te lo pida. Lo predeterminado debería ser la forma que no puede romperse en silencio por un acto tan corriente como ordenar una tabla, porque ordenar una tabla no es un acto que nadie anuncie.
4) Lo Que Cuesta Medio Ancla
Todas las versiones malas de esta fórmula son un número equivocado de símbolos de dólar, y cada una falla de forma distinta:
=$F$1+SUMA($D$2:D2) correcta 7.970,00 … 6.333,05
=$F$1+SUMA(D2:D2) sin ancla 7.970,00, 2.845,00 … 6.725,40
=$F$1+SUMA($D$2:$D$2) todo anclado 7.970,00 en las catorce filas
=F1+SUMA($D$2:D2) inicial suelto 7.970,00, 1.175,00 … 1.513,05
La segunda se reduce a =$F$1+D2 — la columna acumulada se convierte en la columna de importes con 4.820,00 sumado a cada fila, y como sube y baja con los importes parece viva. La tercera es una columna plana con un valor repetido, que nadie tarda mucho en echar de menos.
La cuarta es la que cuesta un día. F1 sin anclar se convierte en F2, F3, F4 al arrastrar, y de F2 hacia abajo está vacío, así que a partir de la fila 3 el saldo inicial se suma en silencio como cero. La fila 2 es correcta. Todas las de debajo se quedan cortas exactamente en 4.820,00, y el saldo de cierre dice 1.513,05 en lugar de 6.333,05.
Ese fallo es peligroso justo porque 4.820,00 parece una transacción. Es un número redondito de un tamaño verosímil, y la reunión de conciliación se pasa la tarde buscando un pago perdido de 4.820 £ que no existe, en un libro donde la discrepancia real es un símbolo de dólar.
Merece la pena nombrar también el casi-fallo: este libro tiene un cobro de exactamente 3.150,00 el día 1 y un pago de IVA de exactamente -3.150,00 el día 18. Cualquier descuadre de 3.150,00 tiene dos explicaciones candidatas, y ninguna de las dos es la buena cuando la culpa es de una fórmula.
🎯 Escenario: Cuando un saldo acumulado se desvía en una constante en todas las filas menos la primera, mira la celda semilla antes que los datos. Un desfase constante es un problema de anclaje o un saldo inicial equivocado; un desfase creciente es un problema de rango; una discrepancia que aparece una vez y se queda es una sola fila mala. Esas tres formas se diagnostican solo con la columna de diferencias, y la columna de diferencias es =G2-($F$1+SUMA($D$2:D2)) al lado de lo que hayas heredado.
5) El Acumulado Que Ignora el Filtro
Filtra el libro para ver solo Cobros. Se quedan en pantalla las filas 2, 5, 9, 11 y 15; desaparecen nueve filas.
SUMA no se entera de nada. Todos los saldos acumulados de la columna G siguen incluyendo los pagos ocultos, así que las filas visibles dicen 7.970,00, 7.329,10, 6.227,35, 8.063,50 y 6.333,05 — cinco números que son saldos correctos de una cuenta, al lado de cinco cobros, en una vista etiquetada Cobros. No hay error, ni rojo, ni hueco. La columna simplemente está respondiendo a una pregunta que nadie en pantalla está haciendo.
SUBTOTALES con el número de función 109 suma solo las filas visibles, y acepta un rango expansivo igual que SUMA:
=SUBTOTALES(109;$D$2:D2) arrastrar por G2:G15
Sin filtrar es el movimiento acumulado — 3.150,00, 1.175,00, 1.088,60 … 1.513,05. Filtrado a Cobros pasa a ser 3.150,00, 4.570,50, 10.170,50, 12.250,50, 14.155,90: el acumulado de lo que se ve, terminando en los 14.155,90 £ de cobros del primer párrafo.
Tres cosas sobre ese 109:
- 109 excluye las filas ocultas a mano; 9 no.
SUBTOTALES(9;…)sigue al filtro pero cuenta igual las filas que ocultaste con el botón derecho. Si nunca ocultas filas a mano las dos se comportan igual, que es justo por lo que la diferencia sale a la luz el único día en que alguien lo hizo. SUBTOTALESignora otrosSUBTOTALESdentro de su rango. Eso es lo que impide que una columna deSUBTOTALESacumulados se coma a sí misma, y es la razón de que este truco funcione siquiera.- Sigue al filtro, no a la ordenación. Una tabla filtrada y ordenada te da un acumulado de las filas visibles en el orden en que estén ahora, con todos los problemas de la sección 2 intactos.
Donde la respuesta no deba moverse cuando alguien filtra — un saldo para el banco, una cifra de auditoría — eso es un argumento a favor de SUMA, no en contra. Elige la que corresponda a la pregunta y escribe cuál elegiste en el encabezado: "Saldo (todas las filas)" y "Acumulado (visibles)" son dos columnas distintas y pueden convivir tan tranquilas.
🎯 Escenario: Cualquier tabla con una flecha de filtro y una columna acumulada necesita que una de estas dos se decida a propósito. Una SUMA bajo un filtro no es una condición de error que Excel vaya a mencionar jamás, y un informe que cambia de significado cuando un usuario pulsa una flecha de filtro es un informe que acabará en una captura de pantalla en el estado equivocado.
6) Un Acumulado Por Categoría
La siguiente pregunta siempre es acumulado dentro de algo — gasto a la fecha por categoría, unidades por producto, horas por proyecto. SUMAR.SI.CONJUNTO lo hace con la misma columna de fechas haciendo dos trabajos:
=SUMAR.SI.CONJUNTO($D$2:$D$15;$C$2:$C$15;C2;$A$2:$A$15;"<="&A2)
Léela así: suma los importes donde la categoría coincide con la de esta fila y la fecha es igual o anterior a la de esta fila. Arrastrada por H2:H15 le da a cada fila el gasto a la fecha de su propia categoría:
| Categoría | Acumulado por fila | Final |
|---|---|---|
| Cobros | 3.150,00 → 4.570,50 → 10.170,50 → 12.250,50 → 14.155,90 | 14.155,90 |
| Gastos generales | -1.975,00 → -2.287,75 → -2.436,75 → -2.855,35 → -2.922,60 | -2.922,60 |
| Viajes | -86,40 → -330,25 | -330,25 |
| Nóminas | -6.240,00 | -6.240,00 |
| Impuestos | -3.150,00 | -3.150,00 |
Los cinco finales suman 1.513,05, el movimiento neto de la sección 1, que es la comprobación de que la columna de categorías no tiene erratas ni un sexto valor escondido. Fíjate además en que la fila de Cobros de esta tabla es carácter por carácter la columna de SUBTOTALES filtrada de la sección 5 — que dos mecanismos completamente distintos aterricen en los mismos cinco números es más confirmación de la que suele ofrecer una hoja de cálculo.
Dos cosas que hay que acertar:
"<="&A2 y no "<=A2". Lo segundo es el texto literal "<=A2", que no coincide con nada y devuelve 0,00 por toda la columna. Una columna de ceros se lee como "esta categoría todavía no ha gastado", no como una fórmula rota, y por eso esta errata sobrevive a las revisiones.
Los empates de fecha duplican. Todas las fechas de este libro son únicas, a propósito. Mueve el pago del 17 de septiembre al 16 para que dos filas de Gastos generales compartan fecha, y las dos devuelven el total que las incluye a las dos: la columna dice -2.436,75, -2.922,60, -2.922,60, y el par repetido parece exactamente una fila duplicada. Si tus fechas se repiten, rompe el empate con algo que no lo haga: una columna auxiliar de número de línea, o una marca de tiempo, dando =SUMAR.SI.CONJUNTO($D$2:$D$15;$C$2:$C$15;C2;$E$2:$E$15;"<="&E2) contra una columna de secuencia E. Es el mismo arreglo que en las clasificaciones con empates, y es la razón de que los libros contables lleven número de línea.
🎯 Escenario: Siempre que construyas una columna de acumulado por grupo, suma los finales de los grupos y compáralos con el total general en una celda. Aquí eso es =SUMA(los cinco finales)-SUMA($D$2:$D$15) → 0,00. Una categoría escrita "Gasto general" en una fila se sale de todos los grupos y de esa comprobación a la vez, que es justo la gracia.
7) El Acumulado Que Se Reinicia
Año en curso, mes en curso y trimestre en curso son acumulados con un suelo. El suelo es el principio del periodo al que pertenece la fila:
mes en curso:
=SUMAR.SI.CONJUNTO($D$2:$D$15;$A$2:$A$15;">="&FECHA(AÑO(A2);MES(A2);1);$A$2:$A$15;"<="&A2)
año en curso:
=SUMAR.SI.CONJUNTO($D$2:$D$15;$A$2:$A$15;">="&FECHA(AÑO(A2);1;1);$A$2:$A$15;"<="&A2)
Las dos descomponen la fecha de la propia fila y reconstruyen el primer día de su periodo con FECHA, así que no se teclea nunca un límite fijo y la fórmula es idéntica en todas las filas de todos los años.
Este libro es de un solo mes, así que las dos devuelven los mismos catorce números: 3.150,00, 1.175,00, 1.088,60, 2.509,10, 2.196,35, 2.047,35, -4.192,65, 1.407,35, 1.163,50, 3.243,50, 2.824,90, 2.757,65, -392,35, 1.513,05.
No es un ejercicio desperdiciado — es como se prueba un reinicio. Dentro de un mismo periodo, un acumulado que se reinicia tiene que ser igual al acumulado normal menos el saldo inicial; en el límite tiene que caer al importe de la primera fila. Las dos mitades se pueden comprobar, la primera aquí y la segunda en cuanto lleguen las filas de octubre.
Dos cifras de esa secuencia merecen una pausa. El mes en curso llega a -4.192,65 el 10 de septiembre: el mes iba 4.192,65 £ en rojo por sus propios movimientos aunque el saldo no bajó nunca de 627,35 £, porque lo estaba sosteniendo el saldo inicial. Y termina en 1.513,05, no en 6.333,05 — una columna de mes en curso es un movimiento, una columna de saldo es una posición, e informar de una bajo el encabezado de la otra es un género de error en sí mismo.
🎯 Escenario: Construye el suelo del periodo desde la fecha de la propia fila con FECHA(AÑO(A2);MES(A2);1) en vez de apuntar a una celda donde alguien teclea "01/09/2026". La versión tecleada está bien hasta la primera fila de octubre, y falla produciendo números en lugar de errores — una fila de octubre medida desde el suelo de septiembre es un total de dos meses con etiqueta de mes en curso.
8) SCAN, LET y la Fórmula Única
En Microsoft 365, la columna entera es una fórmula en una celda:
=SCAN($F$1;$D$2:$D$15;LAMBDA(acumulado;importe;acumulado+importe))
SCAN toma un valor inicial, una matriz y una función de dos argumentos; recorre la matriz llevando el acumulador hacia delante y devuelve todos los valores intermedios, desbordando de 7.970,00 hasta 6.333,05 en G2:G15. Su hermana REDUCE hace el mismo recorrido y devuelve solo el último.
Envuelta en LET para que las partes tengan nombre:
=LET(
inicial; $F$1;
importes; $D$2:$D$15;
SCAN(inicial; importes; LAMBDA(a;v;a+v))
)
Tres observaciones honestas antes de reescribir una hoja que funciona:
- Es rápida.
SCANrecorre la matriz una vez, así que cuesta lo que cuesta la cadena, no lo que cuesta laSUMAexpansiva. En libros grandes es la única construcción que es robusta y rápida a la vez. - Es una celda. Nadie puede sobrescribir su fila 9 por accidente, y nadie puede inspeccionar su fila 9 tampoco. Una columna desbordada no tiene una fórmula por fila en la que hacer clic y auditar, que es una pérdida real en un libro que tiene que firmar otra persona.
- No existe antes de Microsoft 365. Ni en 2019 ni en 2021 —
LAMBDA,SCANyREDUCEson solo de 365, mientras queLETllegó en 2021. Abre el libro en un Excel más antiguo y la celda dice#¿NOMBRE?. Si el archivo sale de tu equipo, las secciones 3 y 5 son las respuestas portables.
🎯 Escenario: Usa SCAN cuando el libro sea tuyo, el número de filas grande y la versión conocida. Usa =$F$1+SUMA($D$2:D2) cuando el libro se vaya a enviar por correo, auditar, o abrir en 2016 en casa de un cliente. Es una decisión de distribución, no un concurso de sofisticación.
9) La Cifra Por la Que Existe un Acumulado
Un saldo de cierre no necesita un acumulado — =$F$1+SUMA($D$2:$D$15) te lo da en una celda. La razón de construir catorce valores es que los hechos interesantes viven en el medio:
=MIN($G$2:$G$15) → 627,35
=MAX($G$2:$G$15) → 8.063,50
=INDICE($A$2:$A$15;COINCIDIR(MIN($G$2:$G$15);$G$2:$G$15;0)) → 10/09/2026
=CONTAR.SI($G$2:$G$15;"<1000") → 1
=CONTAR.SI($G$2:$G$15;"<0") → 0
La cuenta no estuvo nunca en descubierto, se quedó a 372,65 £ del umbral de la alerta una vez, y lo hizo el día en que se pagaron las nóminas. Esas son las tres frases que debería haber contenido el resumen de tesorería, y todas salen del medio de la columna — la parte que una ordenación destruye y un total esconde.
La misma forma responde a la misma pregunta en cualquier otra unidad: el nivel mínimo de existencias y el día en que ocurrió, el pico de plantilla en un plan móvil, la primera fecha en que un gasto acumulado cruza su presupuesto:
=INDICE($A$2:$A$15;COINCIDIR(VERDADERO;INDICE($G$2:$G$15<1000;0);0)) → 10/09/2026
COINCIDIR(VERDADERO; …) encuentra la primera fila que incumple en vez de la peor, que suele ser la más accionable de las dos — el peor día te dice cuánto llegó a empeorar, el primer día te dice cuándo todavía podrías haber hecho algo. El INDICE(…;0) de dentro es lo que hace que la matriz de comparación funcione sin Ctrl+Mayús+Entrar en versiones antiguas.
🎯 Escenario: Si nada de tu libro lee el medio de la columna acumulada — ni un MIN, ni una cuenta de umbral, ni un gráfico — entonces la columna es una manera de catorce celdas de calcular un número, y =$F$1+SUMA($D$2:$D$15) hace eso con una celda y sin ninguno de los modos de fallo de este artículo. Construye la columna cuando necesites la forma; construye el total cuando necesites el total.
10) Velocidad: n² Contra n
Las dos construcciones se ven igual en pantalla y cuestan cantidades muy distintas de recalcular.
La cadena, =G2+D3, hace una suma por fila. Catorce filas, catorce sumas; cincuenta mil filas, cincuenta mil sumas.
El rango expansivo, =$F$1+SUMA($D$2:D2), vuelve a sumar todas las filas que tiene encima. La fila 14 suma trece celdas, la fila 15 suma catorce. Eso es n(n+1)/2 — 105 sumas de celda aquí, y con cincuenta mil filas 1.250.025.000. En un recálculo de toda la columna esa es la diferencia entre imperceptible y un libro que se para cada vez que alguien teclea.
| Filas | Cadena | SUMA expansiva | SCAN |
|---|---|---|---|
| 14 | 14 | 105 | 14 |
| 1.000 | 1.000 | 500.500 | 1.000 |
| 50.000 | 50.000 | 1.250.025.000 | 50.000 |
Así que el resumen honesto es incómodo: la construcción frágil es la rápida, y la robusta es la que se degrada. Tres salidas, en el orden en que merece la pena probarlas:
- Déjalo. Por debajo de unos pocos miles de filas la
SUMAexpansiva es gratis, y la mayoría de los libros contables tienen menos de unos pocos miles de filas. - Usa
SCAN. Un recorrido y una celda, robusta y lineal, a cambio de Microsoft 365 y de perder la auditabilidad por fila. La sección 8 cubre el intercambio. - Quédate con la cadena y defiéndela. Si la cadena es la única opción, añade la comprobación de orden de la sección 11 en una celda visible y convierte el rango en una Tabla de Excel para que ordenar tenga que ser deliberado. La cadena no está prohibida; es una construcción con una condición previa, y una condición previa no dicha es de lo que va todo este artículo.
🎯 Escenario: Antes de optimizar, comprueba si la columna acumulada hace falta siquiera en todas las filas. Una columna acumulada sobre 50.000 líneas de transacción que alimenta un gráfico de 24 puntos mensuales suele poder ser un SUMAR.SI.CONJUNTO sobre 24 filas, que son 24 fórmulas en vez de 1.250 millones de sumas.
11) Cuatro Comprobaciones
Una: el punto final. =REDONDEAR($F$1+SUMA($D$2:$D$15)-G15;2) tiene que ser 0,00. El último valor acumulado tiene que ser igual al saldo inicial más la columna entera, y esta es la celda que caza el fallo de ancla suelta de la sección 4, que aterriza en 1.513,05 y falla esto por exactamente 4.820,00.
Dos: no se ha saltado nada. =CONTARA($D$2:$D$15)-CONTAR($D$2:$D$15) tiene que ser 0. Cualquier otra cosa es texto donde debería haber un número — "pendiente", un guion, un importe pegado como texto desde el CSV del banco — y SUMA se lo salta todo sin decir nada mientras todos los totales de debajo siguen siendo coherentes entre sí.
Tres: sin huecos. =CONTAR($G$2:$G$15) tiene que ser 14. Un blanco en medio de una columna acumulada en cadena es una fila insertada, y =G8+D9 leyendo ese blanco como cero es como un saldo se reinicia en silencio desde cero a media página.
Cuatro: las filas están en orden. =SUMAPRODUCTO(--($A$3:$A$15<$A$2:$A$14)) tiene que ser 0. Esta es la comprobación por la que existe todo el artículo: cuenta las filas cuya fecha es anterior a la de la fila de encima, que es 0 en orden de fecha, 6 ordenando de mayor a menor y 7 de menor a mayor. Es la única de las cuatro que falla en la hoja del primer párrafo, donde las otras tres pasan.
🎯 Escenario: Pon las cuatro encima del libro, no en una pestaña oculta. Las comprobaciones uno a tres prueban la aritmética y la cuatro prueba la premisa, y aquí lo que se rompió fue la premisa — un saldo acumulado cuyos números cuadran todos en un orden que nunca ocurrió es un documento sin ningún error dentro y sin nada cierto tampoco.
12) Doce Trampas
- Un acumulado en cadena sobrevive a una ordenación y deja de significar nada. Las fórmulas se recalculan, no aparece ningún error, el saldo de cierre sigue bien, y todos los valores intermedios pasan a ser el saldo de un mes que no ocurrió.
- El saldo de cierre no puede detectar el problema. La suma es conmutativa, así que las catorce ordenaciones de este libro cuadran en 6.333,05. Cualquier comprobación que solo mire la última fila pasa en todas.
=SUMA(D2:D2)no es un acumulado. Sin ninguno de los dos extremos anclado se reduce al importe de la propia fila, y la columna se convierte en una copia de la columna de importes que se mueve de forma convincente.F1en vez de$F$1cuesta el saldo inicial de la fila 3 hacia abajo. La fila 2 está bien, todas las de después se quedan cortas en una constante, y la constante parece una transacción que falta.- Borrar la primera fila de datos convierte
$D$2en#¡REF!en todas partes a la vez. Este es el fallo que quieres: ruidoso, inmediato e imposible de publicar. - Insertar una fila rompe una cadena y cura un rango expansivo.
=G8+D9lee la nueva G8 en blanco como cero y tira todo lo acumulado por encima, sin error en ninguna fila. SUMAignora el filtro. Una vista filtrada que muestra cinco cobros junto a cinco saldos que incluyen nueve pagos ocultos no se señala de ninguna manera.SUBTOTALES(109;$D$2:D2)es la versión que sigue al filtro.SUBTOTALES(9;…)ySUBTOTALES(109;…)solo se diferencian en las filas ocultas a mano. Coinciden durante meses y luego discrepan el día en que alguien oculta una fila con el botón derecho."<=A2"es texto literal. El criterio de fecha hay que construirlo como"<="&A2. El síntoma es una columna de 0,00, que se lee como "todavía no se ha gastado nada" y no como una fórmula rota.- Las fechas iguales duplican en un acumulado con
SUMAR.SI.CONJUNTO. Dos filas del 16 de septiembre devuelven las dos el total que las incluye a las dos, así que la secuencia repite un valor. Rompe el empate con una columna de secuencia, no con la fecha. - Un acumulado pegado como valores y luego reordenado es irrecuperable y parece perfecto. No queda ninguna fórmula que recalcular, así que los números se quedan quietos mientras las filas se mueven a su alrededor, y la comprobación cuatro de la sección 11 es lo único que lo ve.
- La
SUMAexpansiva es O(n²). Bien con 1.000 filas, 1.250 millones de sumas con 50.000. Date cuenta antes de que se dé cuenta el libro.
Práctica
Con las catorce filas de la cuadrícula de arriba y el saldo inicial 4.820,00 en F1:
- Construye las dos. Pon la cadena en G y el rango expansivo en H, confirma que coinciden en las catorce filas, y después ordena la tabla por Importe descendente y di qué columna sigue significando algo. Las dos seguirán terminando en 6.333,05.
- Encuentra el punto bajo. Escribe la fórmula que devuelve el saldo más bajo y la que devuelve la fecha en que pasó. Deberías obtener 627,35 y 10/09/2026.
- Rómpelo a propósito. Cambia
$F$1porF1en la fórmula acumulada y arrástrala. ¿Cuál es el nuevo saldo de cierre, y cuál es la diferencia con 6.333,05? ¿Por qué esa diferencia parece una transacción? - Consciente del filtro. Construye
=SUBTOTALES(109;$D$2:D2), filtra a Cobros y demuestra que la última fila visible dice 14.155,90. Después filtra a Gastos generales y predice el último valor antes de mirar. - Por categoría. Construye el acumulado con
SUMAR.SI.CONJUNTOde la sección 6 y demuestra que los cinco finales de categoría suman 1.513,05. Después renombra un "Gastos generales" como "Gasto general" y encuentra los dos sitios donde cambia ese número. - La comprobación de orden. Escribe
=SUMAPRODUCTO(--($A$3:$A$15<$A$2:$A$14)), confirma que es 0, ordena por Importe ascendente y confirma que es 7. Esa única celda es la diferencia entre el informe del primer párrafo de este artículo y uno verdadero.
Resumen
Un acumulado es la única columna de una hoja de cálculo que es una afirmación sobre el orden, y el orden es la única propiedad de una tabla que Excel deja cambiar a cualquiera con dos clics y sin ningún aviso.
Así que: prefiere =$F$1+SUMA($D$2:D2) — un extremo absoluto, otro relativo — porque se vuelve a deducir a sí misma de las filas que tiene encima en ese momento y no puede desincronizarse en silencio por una ordenación o una fila insertada. Ten el importe con signo en una sola columna. Ancla el saldo inicial, o mira cómo una constante desaparece de todas las filas menos de la primera y se investiga como un pago perdido. Usa SUBTOTALES(109;…) cuando la columna tenga que seguir a un filtro y SUMA cuando no, y pon cuál elegiste en el encabezado. Usa SUMAR.SI.CONJUNTO para el acumulado por grupo y para todo lo que se reinicie por periodo, construyendo el suelo del periodo desde la fecha de la propia fila. Coge SCAN cuando el libro sea tuyo y grande, y déjalo cuando el libro viaje. Y después comprueba el punto final, los huecos, el texto y — la que de verdad importa — que las fechas son ascendentes.
La alternativa es la versión con la que empezó este artículo: todos los importes correctos, los dos totales cuadrando con el banco, el saldo de cierre exacto al céntimo, una alerta de descubierto leyendo el saldo de cierre como el punto bajo del mes, y una cuenta que pasó una mañana a 372,65 £ de un umbral del que nadie avisó que se había acercado.
