En resumen —
SUBTOTALes un total que conoce tu filtro. ElSUMnormal siempre suma todas las filas;SUBTOTALse salta las filas que un filtro ha ocultado, así que la cifra del final de una lista filtrada se actualiza en vivo. Sintaxis:=SUBTOTAL(function_num, range). Elfunction_numelige la operación y el comportamiento de ocultación:9= SUM ignorando las filas filtradas;109= SUM ignorando las filas filtradas y las ocultadas a mano. Su segundo superpoder:SUBTOTALignora otrosSUBTOTALdentro de su rango, así que un total general nunca cuenta dos veces tus subtotales de grupo. Lo que no hace es saltarse valores de error — para eso estáAGGREGATE. Funciona en Excel 2003+.
Nota: en la interfaz de Excel en español, esta función se llama SUBTOTALES (separador de argumentos: punto y coma
;).
=SUBTOTAL(9, Sales) ' SUMA de las filas visibles tras filtrar
=SUBTOTAL(109, Sales) ' SUMA de las filas visibles tras filtrar Y ocultar a mano
SUM tiene un solo trabajo y lo hace sin matices: sumar todo, haya filtro o no.
Esa ceguera es justo el problema cuando trabajas con una lista filtrada y quieres
el total de lo que ves. SUBTOTAL es la respuesta — pero esconde una famosa
trampa en su primerísimo argumento, y una segunda característica que casi nadie te
enseña y que la convierte en la herramienta adecuada para informes por niveles.
Vamos con las dos.
Lo que vas a aprender
- El modelo mental: un total que se recalcula con tu filtro
- La tabla de
function_num— once operaciones, dos familias - La trampa del 9 frente al 109: por qué ocultar filas a mano no cambia un total
9 - Por qué
SUBTOTALignora otrosSUBTOTAL— el superpoder de no contar doble - Lo único que no puede hacer: saltarse valores de error
- La decisión de criterio:
SUBTOTALfrente aSUMfrente aSUMIFS
El modelo mental: un total que se mueve con tu filtro
Imagina una lista de ventas con un Autofiltro puesto. Filtras por "Oeste" y se
muestran diez filas. Un =SUM(Sales) al final sigue sumando todas las filas,
visibles o no — no tiene ni idea de que existe un filtro. =SUBTOTAL(9, Sales)
suma solo las filas que el filtro ha dejado visibles, así que en el momento en
que cambias el filtro a "Este", el total se recalcula a la cifra del Este. Ese es
el concepto entero: SUBTOTAL es un agregado que entiende los filtros. Por eso
tanto la Fila de totales de las tablas de Excel como la función
Datos → Subtotal generan fórmulas SUBTOTAL en lugar de SUM.
La tabla de function_num: once operaciones, dos familias
El primer argumento no es solo "9 significa suma". Es un código que selecciona a la vez la operación y cómo trata las filas ocultas. Hay once operaciones, cada una disponible en dos familias:
' 1–11 : la operación, ignorando las filas ocultadas por FILTRO (pero contando las ocultadas a mano)
' 101–111: la misma operación, ignorando ADEMÁS las filas ocultadas a mano
1/101 = AVERAGE 2/102 = COUNT 3/103 = COUNTA 4/104 = MAX
5/105 = MIN 6/106 = PRODUCT 7/107 = STDEV 8/108 = STDEVP
9/109 = SUM 10/110 = VAR 11/111 = VARP
Así que =SUBTOTAL(1, …) es un AVERAGE que entiende los filtros;
=SUBTOTAL(104, …) es un MAX que también ignora las filas que ocultaste a mano.
Rara vez necesitas memorizar la tabla — pero sí necesitas entender las dos
familias, porque ahí vive la trampa.
La trampa del 9 frente al 109
Aquí está el fallo que manda a la gente a los foros. Tienes
=SUBTOTAL(9, Sales). Haces clic derecho en unas filas y las ocultas a mano
(sin filtro), esperando que el total baje. No se inmuta. ¿Por qué?
Porque la familia 1–11 solo ignora las filas ocultadas por un filtro. Las
filas que ocultaste a mano siguen contando. Para excluir también las
ocultaciones manuales, necesitas la familia 101–111:
=SUBTOTAL(9, Sales) ' ignora las filas filtradas; CUENTA las ocultadas a mano
=SUBTOTAL(109, Sales) ' ignora las filas filtradas Y las ocultadas a mano
La regla práctica: si solo filtras, 9 y 109 dan la misma respuesta. En el
momento en que ocultas filas a mano, usa los códigos 100+. En la duda, tira
por 109 para las sumas y 103 para los recuentos — se comportan como la mayoría
espera que se comporte un "total de lo que veo".
El superpoder que nadie enseña: SUBTOTAL ignora otros SUBTOTAL
Esta es la característica que hace que SUBTOTAL sea más que "un SUM filtrado", y
es la razón de que exista. Un SUBTOTAL se salta cualquier otra celda
SUBTOTAL que haya dentro de su rango. Imagina un informe con un SUBTOTAL
después del bloque de cada región, y luego un SUBTOTAL general que abarca toda la
columna:
B10 =SUBTOTAL(9, B2:B9) ' subtotal Oeste
B20 =SUBTOTAL(9, B11:B19) ' subtotal Este
B21 =SUBTOTAL(9, B2:B20) ' total GENERAL — NO cuenta dos veces B10 y B20
Un =SUM(B2:B20) normal sumaría los dos subtotales de grupo encima de las
filas de detalle y duplicaría tu total general. SUBTOTAL excluye en silencio los
subtotales anidados, así que el total general es correcto sin que tengas que
recortar el rango a su alrededor. Así es exactamente como Datos → Subtotal
construye resúmenes multinivel que cuadran — y una vez que lo sabes, echarás mano
de SUBTOTAL cada vez que una columna mezcle filas de detalle con subtotales
acumulados.
Lo único que no puede hacer: saltarse errores
SUBTOTAL entiende los filtros, pero no entiende los errores. Un solo #N/A
o #DIV/0! en cualquier punto del rango y todo el SUBTOTAL devuelve un error:
=SUBTOTAL(9, Sales) ' un #N/A en Sales → el propio SUBTOTAL da #N/A
Este es exactamente el hueco que se creó para llenar
AGGREGATE: hace todo lo que hace SUBTOTAL
y añade una opción para ignorar valores de error (y un conjunto más amplio de
funciones). Si tu columna filtrada puede contener errores — un VLOOKUP que no
encuentra, una división por cero — esa es tu señal para subir de nivel a
AGGREGATE.
La decisión de criterio: SUBTOTAL frente a SUM frente a SUMIFS
Responden a preguntas distintas, y confundirlas es la raíz de la mayoría de los líos de "el total está mal":
SUM— el total de todo, ignorando los filtros. Lo correcto para un total general fijo que no debería moverse cuando alguien filtra la hoja.SUBTOTAL— el total de lo visible tras filtrar (y, opcionalmente, tras ocultar a mano). Lo correcto para el final de una lista interactiva, y el motor detrás de las Filas de totales de las tablas.SUMIFS— el total de las filas que cumplen las condiciones que tecleas en la fórmula, independientemente de lo que esté filtrado en pantalla. Lo correcto para una celda de informe que siempre tiene que significar "Oeste T1", esté o no filtrada la hoja a eso.
La forma limpia de retenerlo: SUBTOTAL sigue al filtro; SUMIFS sigue a los
criterios que escribiste. Si quieres que el número reaccione a los desplegables
del filtro, es SUBTOTAL. Si quieres que quede clavado a una definición, es
SUMIFS.
Cómo ayuda ExcelMaster
Los errores con SUBTOTAL rara vez van de sintaxis — van de elegir 9 frente a
109, o de no darte cuenta de que un total general está contando dos veces los
subtotales anidados. ExcelMaster lee lo que estás montando — un total al
final de esta lista filtrada que además ignore las filas que oculto, o un
informe por regiones con subtotales y un total general que cuadre — y escribe el
function_num correcto, el rango correcto, y te cambia a AGGREGATE en el momento
en que entran errores en escena. Tú describes el informe; él elige el código.
Preguntas frecuentes
¿Cuál es la diferencia entre SUBTOTAL 9 y 109?
Ambos SUMAN las filas visibles tras un filtro. La diferencia son las filas
ocultadas a mano: 9 sigue contando las filas que ocultaste con clic
derecho → Ocultar, mientras que 109 también las ignora. Si solo usas el filtro,
coinciden. Si ocultas filas a mano, usa 109.
¿Por qué mi SUBTOTAL no cambia cuando oculto filas?
Probablemente estés usando un código de la familia 1–11 (como 9), que solo
ignora las filas ocultadas por filtro, no las ocultadas a mano. Cámbiate a la
familia 101–111 (por ejemplo, 109) para que ocultar a mano afecte al total.
¿SUBTOTAL ignora otras celdas SUBTOTAL?
Sí — es una característica deliberada. Un SUBTOTAL excluye cualquier otro
resultado SUBTOTAL que haya dentro de su rango, así que un total general sobre
una columna que ya contiene subtotales de grupo no los contará dos veces. Un SUM
normal sí lo haría.
¿Cómo sumo solo las celdas filtradas/visibles?
Usa =SUBTOTAL(9, range) (o 109 para saltarte también las filas ocultadas a
mano). Para una tabla, activa la Fila de totales — inserta SUBTOTAL por ti y te
deja elegir la función desde un desplegable.
¿Cómo hago que SUBTOTAL se salte los valores de error?
No puede. Usa AGGREGATE en su lugar —
=AGGREGATE(9, 6, range) suma las filas visibles ignorando los errores. Ese
argumento extra de options es toda la razón de que AGGREGATE exista.
Probado en
Probado en: Excel 365 (Windows 11) — última verificación el 30/06/2026.
Guías relacionadas: Excel AGGREGATE · Excel SUMIFS · Excel SUMPRODUCT · Excel FILTER · Excel COUNTIFS
