🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Función SUBTOTAL en Excel: totales que respetan tu filtro (y la trampa del 9 frente al 109)

|

Función SUBTOTAL en Excel: totales que respetan tu filtro (y la trampa del 9 frente al 109)

En resumenSUBTOTAL es un total que conoce tu filtro. El SUM normal siempre suma todas las filas; SUBTOTAL se 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). El function_num elige 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: SUBTOTAL ignora otros SUBTOTAL dentro 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é SUBTOTAL ignora otros SUBTOTAL — el superpoder de no contar doble
  • Lo único que no puede hacer: saltarse valores de error
  • La decisión de criterio: SUBTOTAL frente a SUM frente a SUMIFS

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 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