Cómo crear filtros dinámicos con QUERY en Google Sheets

En este tutorial vamos a profundizar en el uso avanzado de la función QUERY en Google Sheets para crear filtros dinámicos y robustos. Aprenderás a construir consultas que permitan mostrar datos filtrados por diferentes criterios, como país, vendedor, categoría y producto, incluyendo la opción de seleccionar «Todos» para cada filtro. Esto es ideal para crear dashboards interactivos y sostenibles en el tiempo, donde el usuario pueda elegir fácilmente qué datos quiere ver sin que la fórmula se rompa o genere errores inesperados.

Preparando los filtros con opción «Todos»

Para que los filtros sean flexibles y permitan seleccionar uno, varios o todos los valores, primero debemos crear listas desplegables que incluyan la opción «Todos». Esto evita que la fórmula se rompa cuando el usuario no quiere filtrar por un criterio específico.

Supongamos que tenemos una tabla de ventas con las siguientes columnas:

ColumnaDescripción
AFecha
BProducto
CCategoría
JPaís de venta
KVendedor
VentasMonto de venta

Para crear las listas desplegables con la opción «Todos», lo ideal es hacer lo siguiente:

  • Crear una pestaña llamada Listas para manejar los valores únicos de cada filtro.
  • Usar la función UNIQUE para obtener los valores únicos de cada columna (país, vendedor, categoría, producto).
  • Agregar manualmente la palabra «Todos» al inicio de cada lista para que aparezca como opción en el desplegable.
  • Usar estas listas como rango para la validación de datos en las celdas donde el usuario selecciona el filtro.
=UNIQUE(J2:J1000)  // Para obtener países únicos

Luego en la celda superior de la lista en la pestaña Listas escribimos «Todos» y justo debajo pegamos la fórmula UNIQUE para que la lista quede así:

Todos
Colombia
Perú
Argentina

Con esto, al crear la validación de datos en la hoja principal, seleccionamos el rango completo que incluye «Todos» y los valores únicos, así el usuario podrá elegir cualquiera de ellos.

Construyendo la fórmula QUERY dinámica

El reto principal es que cuando el usuario seleccione «Todos» en algún filtro, la fórmula no debe poner ninguna condición para esa columna en la consulta QUERY. Para esto, vamos a construir la consulta con condicionales que evalúan si el filtro está en «Todos» o no.

La idea es crear una matriz auxiliar donde definamos la condición para cada filtro. Por ejemplo, para el filtro de país (columna J) la condición será:

=SI(B1="Todos";"";"J = '" & B1 & "'")

Donde B1 es la celda donde el usuario escoge el país. Si la celda es «Todos», entonces la condición queda vacía, es decir, no se filtra por esa columna. Si no, se construye la condición J = 'País'.

Repetimos este patrón para cada filtro (vendedor, categoría, producto) usando las columnas correspondientes, por ejemplo:

=SI(B2="Todos";"";"K = '" & B2 & "'")
=SI(B3="Todos";"";"C = '" & B3 & "'")
=SI(B4="Todos";"";"B = '" & B4 & "'")

Luego, concatenamos todas estas condiciones usando el operador AND solo si la condición no está vacía. Para evitar problemas cuando todas las condiciones están vacías (es decir, todos los filtros en «Todos»), usamos una condición inicial que siempre es verdadera, por ejemplo:

WHERE A IS NOT NULL

Esto garantiza que la consulta siempre tenga al menos una condición válida y no cause error.

Finalmente, construimos la fórmula QUERY completa concatenando las condiciones, por ejemplo:

=QUERY(A6:K1000; 
"SELECT A, B, C, J, K, F 
 WHERE A IS NOT NULL " & 
 SI(B1="Todos";"";" AND J = '" & B1 & "'") &
 SI(B2="Todos";"";" AND K = '" & B2 & "'") &
 SI(B3="Todos";"";" AND C = '" & B3 & "'") &
 SI(B4="Todos";"";" AND B = '" & B4 & "'")
 ; 1)

Así, la consulta se adapta a los filtros seleccionados y si algún filtro está en «Todos» simplemente no agrega esa condición.

Validaciones y listas desplegables condicionales

Para mejorar la experiencia del usuario, podemos crear listas desplegables condicionales. Por ejemplo, que cuando se seleccione un país, el filtro de vendedores solo muestre los vendedores de ese país. Esto se logra con la función FILTER combinada con UNIQUE y condicionales.

=SI(B1="Todos";
UNIQUE(K2:K1000);
UNIQUE(FILTRAR(K2:K1000; J2:J1000=B1)))

Esta fórmula muestra todos los vendedores si el filtro país está en «Todos», o solo los vendedores del país seleccionado si no.

Lo mismo se puede hacer para la categoría y el nombre del producto, filtrando según la selección previa para que el usuario solo vea opciones válidas y no se frustre con combinaciones que no tienen resultados.

Conclusión

En este tutorial aprendimos a construir una fórmula QUERY avanzada que permite filtrar datos dinámicamente con múltiples condiciones y la opción de seleccionar «Todos» para cada filtro, sin que la fórmula se rompa o genere errores. Además, vimos cómo crear listas desplegables condicionales para mejorar la usabilidad y evitar combinaciones sin datos.

Este método es muy útil para crear dashboards interactivos y sostenibles, donde el usuario puede explorar los datos fácilmente y el mantenimiento es mínimo.

Como siguiente paso, puedes explorar el uso de la función QUERY en combinación con otras funciones como ARRAYFORMULA y IMPORTRANGE para crear reportes aún más potentes y automatizados.

Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.

Deja un comentario

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.

JuanSGuzman
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.