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

Función FILTER en Excel — Devuelve todas las filas que coinciden (y arregla

|

Función FILTER en Excel — Devuelve todas las filas que coinciden (y arregla

ResumenFILTER responde a una pregunta distinta que BUSCARV. Una búsqueda devuelve una coincidencia; FILTER devuelve todas las filas que cumplen tu condición y las derrama en un rango que se actualiza solo. Sintaxis: =FILTER(matriz; incluir; [si_vacío]). Tres cosas hacen tropezar a todos: si no hay coincidencias sale #CALC! salvo que pases el tercer argumento (=FILTER(data; cond; "Sin resultados")); para combinar condiciones se multiplican matrices para Y y se suman para O ((A=x)*(B=y)), nunca Y()/O(); y un rango de derrame bloqueado da #SPILL!. Disponible en Excel 365 y 2021+.

=FILTER(Sales, Region = "West")
=FILTER(Sales, (Region = "West") * (Amount > 1000), "Sin resultados")

Durante veinte años, sacar «todas las filas donde región = Oeste» exigía una columna auxiliar, autofiltro y copiar-pegar — o una frágil fórmula matricial. FILTER lo convierte en una expresión que se recalcula en cuanto cambian los datos de origen. Pero como devuelve una matriz en vez de un solo valor, se comporta de formas que una búsqueda nunca tuvo, y los mensajes de error también son nuevos.

Nota: en una interfaz de Excel en español la función puede aparecer como FILTRAR. Equivalentes: UNIQUE = UNICOS, SORT = ORDENAR, SORTBY = ORDENARPOR. Las fórmulas de abajo usan los nombres en inglés; el comportamiento es idéntico.

Lo que aprenderás

  • Por qué FILTER es una consulta (devolver muchas) y una búsqueda es encontrar (devolver una)
  • El truco de Y / O: multiplicar y sumar matrices — no Y() ni O()
  • Por qué un resultado vacío da #CALC! y el único argumento que lo arregla
  • Qué causa realmente #SPILL! y cómo despejarlo
  • La «fórmula maestra» =SORT(UNIQUE(FILTER(...))) para listas limpias y vivas

El modelo mental: FILTER es una consulta, no una búsqueda

Si has usado SQL, FILTER es la cláusula WHERE: dame cada fila donde esto sea verdadero. BUSCARV y BUSCARX son lo contrario — recorren de arriba abajo y se detienen en la primera coincidencia. Esa única diferencia explica todas las sorpresas que da FILTER. Una búsqueda devuelve un valor a una celda. FILTER devuelve un bloque de filas y las derrama hacia abajo (y a la derecha) desde la celda donde escribes la fórmula. No arrastras nada, no la envuelves en matricial: la escribes una vez y Excel ajusta el tamaño de la salida a los datos.

' Una coincidencia, una celda:
=XLOOKUP("West", Region, Sales)        ' la primera fila Oeste

' Cada coincidencia, derramada en un rango:
=FILTER(Sales, Region = "West")        ' todas las filas Oeste, tantas como haya

Piensa el segundo argumento, incluir, como una columna de VERDADERO/FALSO de la misma altura que tus datos. Region = "West" no compara una celda — compara toda la columna Región a la vez y produce una matriz de VERDADERO/FALSO. FILTER se queda con las filas cuyo valor es VERDADERO.

La regla que lo desbloquea todo: multiplica para Y, suma para O

Es lo más útil que hay que saber de FILTER, y casi todos los tutoriales lo entierran. Tu instinto escribe Y(Region="West"; Amount>1000). No funcionaY() colapsa toda la matriz a un único VERDADERO/FALSO, así que FILTER devuelve todo o nada. El argumento incluir tiene que seguir siendo una matriz. Así que haces tú mismo el álgebra booleana:

' Y  — multiplica las condiciones (VERDADERO*VERDADERO = 1, todo *FALSO = 0)
=FILTER(Sales, (Region = "West") * (Amount > 1000), "Sin resultados")

' O  — suma las condiciones (FALSO+FALSO = 0, cualquier cosa > 0 se conserva)
=FILTER(Sales, (Region = "West") + (Region = "East"), "Sin resultados")

Multiplicar es Y lógico porque VERDADERO*VERDADERO = 1 y todo *FALSO = 0. Sumar es O lógico porque una fila sobrevive si cualquiera de los términos es 1. Envuelve cada condición en paréntesis — la comparación debe ocurrir antes que el cálculo. Cuando lo interiorizas, cualquier criterio complejo es solo aritmética con matrices de unos y ceros.

Por qué FILTER da #CALC! — y el argumento que lo evita

Este es el reporte número uno de «FILTER no funciona». Cuando ninguna fila coincide, el resultado es una matriz vacía, y Excel no puede mostrar «nada» en una celda — así que devuelve el error #CALC!. No es un fallo de tu lógica; así se ve una matriz vacía. El arreglo es el tercer argumento opcional, si_vacío:

=FILTER(Sales, Region = "North")                    ' -> #CALC!  si no hay filas Norte
=FILTER(Sales, Region = "North", "Sin resultados")   ' -> "Sin resultados"  (limpio)
=FILTER(Sales, Region = "North", "")                 ' -> en blanco, si lo prefieres

Haz de si_vacío un hábito en cada FILTER que alimente un panel u otra fórmula. Un #CALC! inesperado se propaga — todo lo que referencie el derrame hereda el error. Pasar si_vacío convierte «sin resultados» en un valor que controlas en lugar de un error rojo que rompe el resto de la hoja.

#SPILL! es cosa de los vecinos, no de la fórmula

FILTER necesita celdas vacías donde derramar. Si algo — un valor perdido, una celda combinada, una etiqueta sobrante — ocupa el rango que el resultado quiere, Excel no puede colocar la matriz y devuelve #SPILL!. La fórmula está bien; el destino está bloqueado. Haz clic en la celda y Excel resalta el rango de derrame que intenta usar. Despeja lo que haya ahí y el resultado aparece. Dos reglas prácticas: nunca pongas un FILTER justo encima de datos existentes, y no llenes una columna entera (A:A) con algo que caería en una zona de derrame.

Referencia un resultado derramado con el operador

Como el tamaño de salida cambia con los datos, no lo referencias con un rango fijo. Apuntas al derrame con el operador #: si tu FILTER está en E2, entonces E2# significa «todo el rango derramado, del tamaño que tenga ahora mismo». Así alimentas un gráfico, un COUNTA o una lista desplegable que crezca y se encoja sola:

=COUNTA(E2#)        ' cuántas filas devolvió FILTER, en vivo
=SUM(F2#)           ' total de una columna de importes derramada

La fórmula maestra: SORT, UNIQUE y FILTER juntas

FILTER importa tanto porque se compone. Anídalo dentro de UNIQUE y SORT y obtienes una única fórmula que se mantiene sola y que casi todos arman en tres pasos manuales:

=SORT(UNIQUE(FILTER(Customer, Region = "West")))

Léela de dentro afuera: FILTER saca los clientes del Oeste, UNIQUE quita duplicados, SORT ordena alfabéticamente — y todo se vuelve a ejecutar en cuanto se añade una venta. Es la fuente canónica de una lista desplegable dinámica o de una lista de panel. Sin columnas auxiliares, sin botón de actualizar, sin VBA.

El criterio: cuándo FILTER sustituye a lo de siempre

Si te pillas añadiendo una columna auxiliar y activando el autofiltro solo para copiar filas coincidentes, esa es la señal para usar FILTER. Si tecleas una fórmula matricial {=...} para extraer un subconjunto, ese patrón lleva una década obsoleto en 365. La excepción honesta: en hojas enormes FILTER recalcula con todo el libro, así que para una extracción única de un millón de filas el autofiltro o Power Query son más ligeros. Para todo lo que deba seguir vivo, gana FILTER.

Cómo ayuda ExcelMaster

Mucho trabajo con FILTER es en realidad «constrúyeme la vista viva»: todas las facturas impagadas y vencidas, ordenadas por importe, en su propia pestaña. ExcelMaster escribe esa fórmula — incluida el álgebra booleana de Y/O y la protección si_vacío — a partir de una descripción en lenguaje natural, la coloca donde quieras y comprueba que el rango de derrame esté despejado. Tú mantienes la lógica; él se ocupa de la mecánica de matrices que hace a FILTER quisquilloso a mano.

Preguntas frecuentes

¿Por qué mi fórmula FILTER devuelve #CALC!?

Porque ninguna fila coincidió, y una matriz vacía no puede mostrarse en una celda. Añade el tercer argumento, si_vacío: =FILTER(data; condición; "Sin resultados"). Reemplaza el error por un valor que tú eliges.

¿Cómo filtro por varios criterios en Excel?

Mantén el argumento incluir como matriz y haz álgebra booleana: multiplica las condiciones para Y — (A=x)*(B=y) — y súmalas para O — (A=x)+(B=y). No uses Y() ni O(); colapsan la matriz a un solo valor.

¿Qué causa el error #SPILL! con FILTER?

Algo bloquea las celdas donde el resultado quiere derramarse — un valor, una celda combinada o formato en el rango de derrame. Haz clic en la celda de la fórmula para ver el rango resaltado, despeja lo que haya y el resultado aparecerá.

¿Funciona FILTER en Excel 2016 o 2019?

No. FILTER y las demás funciones de matriz dinámica requieren Excel 365 o Excel 2021+. En 2016/2019 usa el autofiltro, una fórmula matricial o Power Query.

Probado en

Probado en: Excel 365 (Windows 11) — última verificación 16-06-2026.

Guías relacionadas: Excel UNIQUE · Excel SORT · XLOOKUP en Excel