Como filtrar datos dinámicamente con FILTER en Google Sheets

Funcion FILTER en Google Sheets
— by

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

Boletín

Nuestras últimas noticias en tu correo electrónico

Respuestas

  1. Avatar de German Vignola
    German Vignola

    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

    1. Avatar de jsguzmanb
      jsguzmanb

      Hola!

      Pudiste solucionar?

      Saludos!

  2. Avatar de jobsam
    jobsam

    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

    1. Avatar de jsguzmanb
      jsguzmanb

      Hola!

      Puedes usar la función

      TO_DATE(REDONDEAR_MENOS(A1))

      Saludos!

  3. Avatar de MÓNICA DA SILVA
    MÓNICA DA SILVA

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

    1. Avatar de jsguzmanb
      jsguzmanb

      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!

  4. Avatar de MOntserrat
    MOntserrat

    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

    1. Avatar de jsguzmanb
      jsguzmanb

      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!

  5. Avatar de Cesar Enciso
    Cesar Enciso

    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.

    1. Avatar de jsguzmanb
      jsguzmanb

      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!

  6. Avatar de Geraldine
    Geraldine

    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

    1. Avatar de jsguzmanb
      jsguzmanb

      Hola!
      Lo más fácil en este caso es hacerlo con código
      Saludos!

  7. Avatar de estibar
    estibar

    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!

    1. Avatar de jsguzmanb
      jsguzmanb

      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!

  8. Avatar de Jorge
    Jorge

    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 (*).

    1. Avatar de jsguzmanb
      jsguzmanb

      Hola Jorge

      En estos casos en vez de los comodines * que usamos en SUMAR.SI, vamos a usar la función ENCONTRAR()

      Saludos!

      1. Avatar de Jose Maria
        Jose Maria

        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…

  9. Avatar de Javib Jaimes
    Javib Jaimes

    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

    1. Avatar de jsguzmanb
      jsguzmanb

      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!

  10. Avatar de Ramón E Jacobo P
    Ramón E Jacobo P

    Sabes como lograr que filter se use de manera horizontal

    1. Avatar de jsguzmanb
      jsguzmanb

      Hola Ramon

      Creo q lo mas facil es usar TRANSPOSE para convertir los datos a vertical

      Un gran saludo!

  11. Avatar de Catalina
    Catalina

    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!

    1. Avatar de jsguzmanb
      jsguzmanb

      Hola Catalina

      Has probado con QUERY?

      Aquí te dejo el artículo

      https://juansguzman.com/introduccion-a-la-funcion-query-en-google-sheets/

      Saludos!

  12. Avatar de Marina González
    Marina González

    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.

    1. Avatar de jsguzmanb
      jsguzmanb

      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!

  13. Avatar de MAlexRM
    MAlexRM

    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

  14. Avatar de Pedro
    Pedro

    Agradecido por su información. Muy buena.
    Didáctica, precisa, sencilla y completa.
    Me fue de mucha utilidad.
    Saludos cordiales e infinitas bendiciones.

    1. Avatar de jsguzmanb
      jsguzmanb

      Mil gracias por los comentarios Pedro!

  15. Avatar de Juan
    Juan

    Muy valiosa la información, por favor como puedo filtrar o extraer 2 nombres, en el primer ejemplo anterior, necesito extraer Francia y Alemania ?

    1. Avatar de jsguzmanb
      jsguzmanb

      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!

      1. Avatar de NÚRIA
        NÚRIA

        Muchas gracias. Estaba buscando justamente esto

        1. Avatar de jsguzmanb
          jsguzmanb

          Hola Nuria

          Me alegro ser de utilidad

          Un gran saludo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Pin It on Pinterest

Share This