En este artículo hablamos de FILTER una función muy útil en Google Sheets, para filtrar dinámicamente
Aquí pueden ver este articulo en formato de video
Qué es FILTER
Como bien lo dice su nombre (en ingles), FILTER es una función que filtra.
A diferencia de la mayoría de funciones en Excel o Sheets, FILTER actúa como una «función arreglo»
Las funciones arreglo son aquellas cuyo resultado se extiende en varias celdas (tanto por filas como por columnas)
Otros ejemplos de función arreglo son:
- ={}
- ArrayFormula
- QUERY
- UNIQUE
- SPLIT
Esto quiere decir que al usar la función FILTER vamos a obtener un rango
Como se contruye FILTER
FILTER tiene mínimo dos argumentos: El rango y la condición.
Pero a diferencia de funciones como SI, el condicional se estructura de manera diferente: se estructura como una condición arreglo.
Miremos este ejemplo

Digamos que mi condición de filtro va a ser que el país sea Francia
Para entender como ingresamos la condición den FILTER, hagamos la condición manual como una fórmula arreglo
Mi primera condición seria A2 igual a Francia o
=A2="Francia"
Cuyo resultado será FALSO, porque A2 es España

Ahora vamos a «arrastrar» la formula con la ayuda de ArrayFormula, así:
=ArrayFormula(A2:A13="Francia")

Esa es la condición que queremos para nuestro FILTER, ya que va a evaluar todas las filas de nuestro arreglo
Construyamos entonces nuestro primer FILTER
El rango en este caso va a ser A2:A13
La condición va a ser la que ya construimos
Quedaría así entonces:
=filter(A2:A13;ArrayFormula(A2:A13="Francia"))
Y efectivamente me traería todas las celdas con el valor «Francia»

Dado que FILTER es una función arreglo, no necesito el «ArrayFormula» y lo podemos quitar
Quedaría así:
=filter(A2:A13;A2:A13="Francia")
Fíjense que si lo vemos así, es una fórmula «rara», y la condición se ve muy extraña, en comparación a otras funciones.
Por eso la explicación anterior, para saber de donde viene esa construcción «extraña» de la condición.
Filtrar tablas de mas de una columna
Ya conociendo el funcionamiento básico de FILTER, podemos filtrar rangos con más de una columna, simplemente ampliando el rango.
Ampliemos nuestra base de países, incluyendo ciudades, así:

Podemos usar nuestro FILTER ampliando el rango así:
=filter(A2:B13;A2:A13="Francia")

Filtrar una columna con condiciones de otra columna
En otras palabras y viendo nuestro ejemplo, podemos filtrar las ciudades de Francia, sin mostrar el país, así:
=filter(B2:B13;A2:A13="Francia")

Condicion numerica
Ahora incluyamos números en nuestras condiciones. Para esto vamos a incluir las poblaciones de las ciudades

Por ejemplo me gustaría filtrar las ciudades con más de un millón de habitantes
Nuestro FILTER sería:
=filter(A2:C13;C2:C13>1000000)

Dos o más condiciones
Ahora quiero juntar las dos condiciones anteriores. Quiero ver por ejemplo todas las ciudades de Italia con más de 1.000.000 de habitantes
Para esto simplemente agregamos un nuevo argumento con la nueva condición
=filter(A2:C13;C2:C13>1000000;A2:A13=»Italia»)

Y podemos redondear todo lo que hemos hablado, solo mostrando los nombres de las ciudades que cumplen con las condiciones
=filter(B2:B13;C2:C13>1000000;A2:A13="Italia")

Referencias en las condiciones
Podemos ir un paso más allá y volver las condiciones más flexibles. Que el usuario pueda escoger el país y el número de habitantes mínimo
Así quedaría nuestra función:
=filter(B2:B13;C2:C13>F2;A2:A13=F1)
Donde F2 es el número de habitantes y F1 el país
Y así se vería

Y si cambiamos el país y el número:

¡Cambia automáticamente!
Conclusion
Como pudimos ver, FILTER es una función sencilla, pero versátil y que una vez la aprendamos a usar de manera correcta, puede ser una gran adición a nuestro conocimiento de Sheets.
Además, desde 2020, esta función también funciona en Excel, entonces les servirá aún más
Como siempre cuéntenme sus dudas y obstáculos con esta maravillosa función.
Suscríbete para acceder al curso «Descubriendo el poder de Google Sheets» y empezar tu camino a la maestría de Sheets, Forms y Apps Script
hola, una consultilla, en tu ejemplo, como se haría la funcion filter para que mostrara las filas de españa ó italia. Es decir, como meto un OR ahi?
gracias!
Hola
Con el operador + y parentesis
Algo asi
FILTER(A:A;(B:B=»Pedro» + B:B=»Juan»)
Yo se que es un poco extraño
Saludos!
Hola! tengo una consulta por favor.
¿Se puede trabajar con comodines? (coincidencia por aproximación)
Si por ejemplo en la celda F1 colocamos: Esp , para que muestre automáticamente todas las coincidencias al valor.
Digamos algo así: =filter(A2:C13;(A2:A13=»*» & F1 & «*»)
…imaginando que el comodín es el (*).
Hola Jorge
En estos casos en vez de los comodines * que usamos en SUMAR.SI, vamos a usar la función ENCONTRAR()
Saludos!
Hola buen día, primeramente excelente trabajo, tengo una duda como le hago para que me filtre estos ejemplos pero en una hoja diferente
Saludos
Hola!
En una pestaña diferente? Solo pon antes del rango el nombre de la pestaña
Entonces A1:F se convierte en
Datos!A1:F
Saludos!
Sabes como lograr que filter se use de manera horizontal
Hola Ramon
Creo q lo mas facil es usar TRANSPOSE para convertir los datos a vertical
Un gran saludo!
HOla! Tienes algún ejemplo donde se filtren columnas y filas en simultáneo, he leído en la ayuda de google sheets que se puede pero no muestran ahí mismo ejemplos concreto donde se aplique esto. Gracias!
Hola Catalina
Has probado con QUERY?
Aquí te dejo el artículo
https://juansguzman.com/introduccion-a-la-funcion-query-en-google-sheets/
Saludos!
Hola Juan! Quiero crear una lista filtrada a partir de una base de datos. Si modifico algo en esta lista filtrada, que también se modifique en la base de datos, es decir, que no sea solo para visualizar datos si no para modificarlos más fácilmente por las categorías. Los controles de filtro de Sheets me parecen muy tediosos a diferencia de la función FILTER.
Hola Marina
El problema con la función FILTER es que es una función de consulta. Para hacer modificaciones necesitariamos macros o formulas mas complejas
Saludos!
Buen dia Juan
Consulta, hay alguna forma que se active un filtro según el valor de una celda?
ejemplo tengo una tabla de 51 items la cual en una columna están los datos a ver
y en otra columna están los indicadores unos son (HS y otro NHS)
entonces cuando en una celda a parte indique que es HS entonces la tabla solo se verán los datos HS que al lado se les alimentará con un dato
Agradecido por su información. Muy buena.
Didáctica, precisa, sencilla y completa.
Me fue de mucha utilidad.
Saludos cordiales e infinitas bendiciones.
Mil gracias por los comentarios Pedro!
Muy valiosa la información, por favor como puedo filtrar o extraer 2 nombres, en el primer ejemplo anterior, necesito extraer Francia y Alemania ?
Hola Juan
Puedes poner dos condiciones de la misma columna con el operador + y encerrando las condiciones en paréntesis
Algo así:
=filter(A2:C13;(A2:A13=»Francia»)+(A2:A13=»España»))
Un gran saludo!
Muchas gracias. Estaba buscando justamente esto
Hola Nuria
Me alegro ser de utilidad
Un gran saludo!