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:
| Columna | Descripción |
|---|---|
| A | Fecha |
| B | Producto |
| C | Categoría |
| J | País de venta |
| K | Vendedor |
| Ventas | Monto 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.