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.
Hola Juan: estoy buscando hacer un filtro de una tabla, que por ejempo tenga, en una columna paices, en la otra ciuades y la otra habitantes, querria filtrar de manera acumlativa, es decir, si elegi un pais entre varios y luego pueda solo filtrar las ciuadades de este pais y dentro de ellas las que tienen menos de 10000 habitantes. hice el filtro con parentesis y el signo +, pero eso me va sumando lineas.
gracias
Hola!
Pudiste solucionar?
Saludos!
Estoy tratando de filtrar los resultados que obtengo de un formulario de google. Gracias a tu explicación he comprendido correctamente el funcionamiento de la función Filter peeeero, no consigo hacer lo siguiente:
Google Forms me da los resultados con el formato de fecha, por ejemplo, 22/08/2022 11:45:25 y yo quiero hacer un filtro de un intervalo de fechas, por ejemplo del 21/08/2022 al 25/08/2022.
Utilizando “=FILTER(IntervaloPedidos; IntervaloFecha = D1)” funciona a la perfección si soy yo el que pone las fechas, sin las horas. Pero con las horas, no me devuelve resultados.
He puesto en la primera condición la función “Izquierda” para que solo me lea los 10 primeros dígitos, pero me dice: “Error
No se encuentran coincidencias en la evaluación FILTER.”
¿Sabrías como realizar esto que quiero hacer?
Muchas gracias y enhorabuena por tu trabajo
Hola!
Puedes usar la función
TO_DATE(REDONDEAR_MENOS(A1))
Saludos!
(FILTER(Compras!A:C;ISTEXT(Compras!B:B));(FILTER(AUDITORIA!A:E;ISTEXT(AUDITORIA!B:B))))
Hola! Qué tal quiero colocar son Filter en una mis formula para unir dos hojas y me sale error de analisis de formula.
Me puedes ayudar por favor
La formula es la siguiente:
=(FILTER(Compras!A:C;ISTEXT(Compras!B:B));(FILTER(AUDITORIA!A:E;ISTEXT(AUDITORIA!B:B))))
Hola!
El problema que tienes es que el primer filter tiene 3 columnas y el segundo 5. Deben tener el mismo número de columnas
Saludos!
Buenas tardes,
Muchas gracias por sus lecciones.
Aunque he leído mil veces el tutorial, no caigo con la respuesta correcta.
Tengo una tabla en una hoja y en una hoja distinta quiero filtrar las respuestas distintas columnas, no consecutivas ,com la misma condición, y me da error.
El ejemplo es el siguiente:
=filter(Respostes!A2:AF166;Respostes!M2:M166=”Entramat 4: Càpsules de temàtiques educatives”;Respostes!S2:S166=”Entramat 4: Càpsules de temàtiques educatives”).
De toda la tabla las columnas a filtrar son: M, S, y la condición es la misma: Entramat 4: Càpsules de temàtiques educatives.
Quizás no el filtro la función a utilizar?
Muchas gracias y un saludo
Montserrat
Lo que estas haciendo es una condición tipo O, para esto debes usar una condición Y. Esa se hace con el operador +
Algo así:
=filter(Respostes!A2:AF166;Respostes!M2:M166=»Entramat 4: Càpsules de temàtiques educatives»+Respostes!S2:S166=»Entramat 4: Càpsules de temàtiques educatives»).
Cambia la ; por un mas
Saludos!
Hola compuedo hacer que de dos hojas diferentes me filtre los mismos valores lo que pasa es que es informacion de el dia anterior y de el dia actual pero el dia actual lo quiero estar actualizando sin afectar el dia anterior.
Hola!
No es tan sencillo
Lo más fácil en tu caso es usar dos hojas diferentes, una para cada día, y despues consolidar
Pero a futuro no es práctico, porque vas a tener demasiadas hojas
Saludos!
Hola! Quisiera consultar como se pueden integrar o vincular datos filtrados, con celdas a las que se les llenan datos?. Para contextualizar intento que cada perfil evalue cursos, Resulta que mi filter me muestra los cursos asociado a ese perfil y ocupa las columnas a:g y de la h:k igreso las notas por fila, de acuerdo al curso que se evalua. Pero cada vez que borro una fila(curso) de la hoja origen de mi filter(que contiene todos los cursos y perfiles), los datos que se ingresaron, no se borran, se mantienen, pero quedan asociados a otro curso que no fue el que se evaluo. Entonces no se como hacer la correcta vinculacion de lo que muestra el filtro, con el llenado de celdas. Por favor si me pudieses ayudar, desde ya, gracias
Hola!
Lo más fácil en este caso es hacerlo con código
Saludos!
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! podrias poner poner la linea completa? estoy intentando lo que indicaba Jorge, tener una lista de todas las Var_1, Var_2, Var_3…. (“Var_”&*) pero no lo consigo con Find…
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!