Menu

Función FILTRAR en Excel: varios criterios, Y y O (FILTER)

=FILTRAR(A2:C7;B2:B7="North") devuelve cada fila de A2:C7 cuya región es North, y el resultado se actualiza cuando cambian los datos. Aprende varios criterios con * y +, si_vacío, #CALC! y cómo ordenar el resultado.

Todas las hojas de esta página están vivas: cambia un número o una fórmula y se recalculan.

=FILTER(A2:C7,B2:B7="North") devuelve cada fila de A2:C7 cuya región en la columna B es North. En Excel en español la función se llama FILTRAR (FILTER en inglés), y la tabla también acepta las fórmulas escritas en español, con punto y coma (o con comas, como en México): =FILTRAR(A2:C7;B2:B7="North"). La escribes en una celda y las filas que coinciden se derraman en las celdas de abajo y de la derecha. Cambia una región de la columna B a North, o un North a South, y la lista se actualiza.

Filas en las que la región es North
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120AnnNorth120
3BenSouth80CaraNorth200
4CaraNorth200FinnNorth60
5DanEast150
6EveSouth95
7FinnNorth60
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.En Excel en español: =FILTRAR(A2:C7;B2:B7="North")

Solo E2 contiene una fórmula. Las demás celdas llenas de E:G son su resultado derramado: haz clic en F3 y verás que pertenece a la fórmula de E2. Si se escribe algo en esa zona, FILTRAR muestra #SPILL! en lugar de las filas (consulta errores #SPILL!; la tabla muestra los nombres de error en inglés).

Sintaxis de FILTRAR

=FILTER(array, include, [if_empty])
  • array (matriz) es lo que quieres obtener: una columna, varias columnas o la tabla entera.
  • include (incluir) es una condición con un VERDADERO o FALSO por cada fila de array, como B2:B7="North". Debe tener exactamente tantas filas como array. (Para filtrar columnas, dale un valor por columna.)
  • if_empty (si_vacío) es lo que se muestra cuando ninguna fila coincide. Sin él, un resultado vacío es el error #CALC!.

FILTRAR necesita Excel 2021, Excel 2024 o Microsoft 365. En Excel 2019 y anteriores muestra #¿NOMBRE? (#NAME? en inglés), y ahí la forma de filtrar es el botón Filtro de la pestaña Datos. Google Sheets también tiene FILTER, y ahí cada condición también puede darse como un argumento aparte.

Las comparaciones de texto no distinguen mayúsculas: B2:B7="north" coincide con North. FILTRAR mantiene las filas en su orden original; ordenar el resultado es un paso aparte, que se muestra más abajo.

Filtrar por el valor de una celda

Escribir "North" en la fórmula obliga a editarla cada vez. Pon el valor en una celda y compara con la celda. Elige otra región en F1 y el resultado la sigue:

Región elegida de una lista desplegable
E3
ABCDEFG
1NameRegionSalesRegionNorth
2AnnNorth120
3BenSouth80AnnNorth120
4CaraNorth200CaraNorth200
5DanEast150FinnNorth60
6EveSouth95
7FinnNorth60
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.En Excel en español: =FILTRAR(A2:C7;B2:B7=F1;"No sales")

West no tiene filas, así que al elegirla se muestra el texto de if_empty, No sales.

Los números funcionan igual. C2:C7>=F1 con 100 en F1 conserva cada fila con ventas de al menos 100, y C2:C7>F1 la convierte en estrictamente mayor que.

FILTRAR con varios criterios (Y)

Para conservar una fila solo cuando dos condiciones se cumplen a la vez, multiplícalas. Esto devuelve las filas de North con ventas de más de 100:

North y ventas de más de 100
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120AnnNorth120
3BenSouth80CaraNorth200
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.En Excel en español: =FILTRAR(A2:C7;(B2:B7="North")*(C2:C7>100))

Ann (120) y Cara (200) pasan. Finn es de North pero su 60 no supera 100, así que queda fuera.

Por qué multiplicar: cada condición es una columna de VERDADERO y FALSO, y en aritmética VERDADERO cuenta como 1 y FALSO como 0. Una fila obtiene 1 solo cuando todos los factores son 1, así que * funciona como Y. Cada condición necesita sus propios paréntesis, y puedes encadenar tantas como quieras: (B2:B7="North")*(C2:C7>100)*(C2:C7<500).

Y() no funciona aquí. Y(B2:B7="North";C2:C7>100) reduce todo el rango a un único VERDADERO o FALSO en lugar de uno por fila, así que FILTRAR recibe la forma equivocada.

FILTRAR con O

Suma las condiciones para conservar una fila cuando al menos una se cumple. Esto devuelve las filas de North y East:

North o East
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120AnnNorth120
3BenSouth80CaraNorth200
4CaraNorth200DanEast150
5DanEast150FinnNorth60
6EveSouth95
7FinnNorth60
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.En Excel en español: =FILTRAR(A2:C7;(B2:B7="North")+(B2:B7="East"))

Una fila que cumple las dos condiciones suma 2, y FILTRAR conserva cualquier fila cuyo resultado no sea 0, así que la suma funciona como O. Puedes mezclar las dos: ((B2:B7="North")+(B2:B7="East"))*(C2:C7>100) significa (North o East) y más de 100. Aquí devuelve a Ann, Cara y Dan.

FILTRAR devuelve #CALC! cuando nada coincide

Cuando ninguna fila pasa, FILTRAR no tiene nada que devolver. Sin un tercer argumento eso es el error #CALC!; con uno, obtienes tu propio texto:

Ninguna fila es West
E2
ABCDEF
1NameRegionSalesNo if_emptyWith if_empty
2AnnNorth120#CALC!No match
3BenSouth80
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
#CALC! El cálculo no tiene resultado, por ejemplo un FILTRAR que no encuentra nada.En Excel en español: =FILTRAR(A2:A7;B2:B7="West")

E2 muestra #CALC! y F2 muestra No match. Cambia B3 de South a West y las dos fórmulas devuelven a Ben. Para no mostrar nada, usa una cadena vacía: =FILTRAR(A2:A7;B2:B7="West";"").

Esta tabla también muestra cómo filtrar una sola columna: array es A2:A7, así que solo vuelven los nombres. Para obtener algunas columnas de una tabla pero no todas, envuelve el resultado en ELEGIRCOLS (CHOOSECOLS en inglés): =ELEGIRCOLS(FILTRAR(A2:C7;B2:B7="North");1;3) devuelve nombres y ventas sin la región. ELEGIRCOLS necesita Microsoft 365 o Excel 2024.

Ordenar el resultado de FILTRAR

FILTRAR devuelve las filas en el orden en que aparecen en la tabla. Envuélvela en ORDENAR (SORT en inglés) para ordenar el resultado: aquí las filas de North ordenadas por ventas, de mayor a menor. El 3 es la columna del resultado por la que se ordena, y -1 significa descendente.

Filas de North, primero las ventas más altas
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120CaraNorth200
3BenSouth80AnnNorth120
4CaraNorth200FinnNorth60
5DanEast150
6EveSouth95
7FinnNorth60
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.En Excel en español: =ORDENAR(FILTRAR(A2:C7;B2:B7="North");3;-1)

Cara (200) va primero, luego Ann (120) y Finn (60). Para devolver solo las primeras filas, envuélvela una vez más en TOMAR (TAKE en inglés): =TOMAR(ORDENAR(FILTRAR(A2:C7;B2:B7="North");3;-1);2) conserva las dos primeras (TOMAR necesita Microsoft 365 o Excel 2024). ORDENAR y ORDENARPOR cubre las demás opciones de ordenación.

FILTRAR filas que contienen un texto

FILTRAR no tiene comodines, así que B2:B7="*th*" busca el texto literal *th*. Para conservar las filas cuyo nombre contiene un texto, prueba cada celda con HALLAR (SEARCH en inglés), que devuelve una posición cuando encuentra el texto y un error cuando no, y envuélvela en ESNUMERO:

Nombres que contienen "an"
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120AnnNorth120
3BenSouth80DanEast150
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.En Excel en español: =FILTRAR(A2:C7;ESNUMERO(HALLAR("an";A2:A7)))

Esto devuelve a Ann y Dan: HALLAR ignora las mayúsculas, así que "an" también coincide con el An de Ann. Usa ENCONTRAR en lugar de HALLAR para una coincidencia que distinga mayúsculas. En Excel en español la fórmula es =FILTRAR(A2:C7;ESNUMERO(HALLAR("an";A2:A7))).

Práctica: FILTRAR con dos condiciones

Tu turno
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120
3BenSouth80
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.

Tu turno: En E2, devuelve las filas (las tres columnas) de los representantes de South con ventas de más de 85.

Práctica: FILTRAR por una celda, con un valor alternativo

Tu turno
F3
ABCDEF
1NameRegionSalesRegionNorth
2AnnNorth120
3BenSouth80Names
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.

Tu turno: En F3, lista los nombres (solo la columna A) de los representantes de la región escrita en F1. Si no hay ninguno, muestra None.

Errores frecuentes con FILTRAR

  • Rangos de distinto alto. =FILTRAR(A2:C7;B2:B6="North") revisa 5 filas para una tabla de 6, y Excel devuelve #¡VALOR! (#VALUE! en inglés). Haz que include empiece y termine en las mismas filas que array.
  • Ceros donde el origen está vacío. FILTRAR devuelve 0 para una celda vacía de array. Cambia los vacíos por texto vacío antes de filtrar: =FILTRAR(SI(A2:C7="";"";A2:C7);B2:B7="North").
  • Columnas enteras. =FILTRAR(A:C;B:B="North") funciona, pero si la propia fórmula está en las columnas A a C se refiere a sí misma. Pon el resultado junto a la tabla, o usa un rango fijo como A2:C1000.
  • Comillas alrededor de los números. C2:C7>"100" compara números con texto y no conserva nada. Escribe C2:C7>100.
  • Esperar el botón Filtro. FILTRAR copia las filas que coinciden a otro lugar y deja la tabla como está. Para ocultar filas en la propia tabla, usa Datos > Filtro.

Preguntas frecuentes

¿Cómo uso la función FILTRAR en Excel?

Dale las filas que quieres obtener y una condición para cada fila: =FILTRAR(A2:C7;B2:B7="North") devuelve cada fila de A2:C7 en la que la columna B es North. Escríbela en una celda; las filas que coinciden se derraman en las celdas de abajo y de la derecha.

¿Cómo uso FILTRAR con varios criterios en Excel?

Multiplica las condiciones para Y y súmalas para O: =FILTRAR(A2:C7;(B2:B7="North")*(C2:C7>100)) conserva las filas que cumplen las dos, =FILTRAR(A2:C7;(B2:B7="North")+(B2:B7="East")) conserva las que cumplen cualquiera. Cada condición necesita sus propios paréntesis.

¿Por qué FILTRAR devuelve #CALC!?

Porque ninguna fila coincidió y no diste un tercer argumento. Añade uno para mostrar otra cosa: =FILTRAR(A2:C7;B2:B7="West";"No match") muestra No match en lugar del error.

¿Qué versiones de Excel tienen la función FILTRAR?

Excel 2021, Excel 2024 y Microsoft 365, además de Excel para la web. Excel 2019 y anteriores no la tienen y muestran #¿NOMBRE?; ahí necesitas el botón Filtro de la pestaña Datos o una fórmula matricial con INDICE y K.ESIMO.MENOR.

¿Cómo devuelvo solo algunas columnas con FILTRAR?

Filtra solo las columnas que necesitas, o envuelve el resultado en ELEGIRCOLS (Microsoft 365 o Excel 2024): =ELEGIRCOLS(FILTRAR(A2:C7;B2:B7="North");1;3) devuelve la primera y la tercera columna de las filas que coinciden.

Ilustración de los lenguajes de programación de Coddy

Aprende a programar con Coddy

COMENZAR