Cómo crear una consulta QUERY dinámica en Google Sheets

En este tutorial vamos a aprender a crear una consulta dinámica con la función QUERY en Google Sheets, utilizando referencias externas para que el usuario pueda ingresar filtros fácilmente. Esto es súper útil para hacer reportes o dashboards donde quieres que el usuario seleccione países, fechas, ventas mínimas y otros criterios sin tener que modificar la fórmula directamente. Te mostraré paso a paso cómo construir esta consulta dinámica para que puedas adaptarla a tus propios proyectos y ahorrar tiempo.

Para empezar, vamos a hacer un QUERY básico sobre una base de datos llamada datos_aj. El comando inicial es simple, seleccionamos todo con select * para verificar que la consulta funcione bien.

=QUERY(datos_aj; "select *")

Ahora, queremos filtrar las ventas por país. Por ejemplo, que solo muestre las ventas en Colombia. Sabemos que la columna J contiene el país, así que agregamos un filtro WHERE J = 'Colombia'.

=QUERY(datos_aj; "select * where J = 'Colombia'")

Pero, ¿cómo hacemos para que este país sea dinámico y lo pueda escoger el usuario? Para eso, creamos una celda donde el usuario pueda escribir o seleccionar el país, por ejemplo, en la celda B1. Luego, en la fórmula, reemplazamos ‘Colombia’ por una concatenación que tome el valor de esa celda. La forma correcta es usar comillas simples dentro de la consulta y concatenar con el valor de B1:

=QUERY(datos_aj; "select * where J = '" & B1 & "'")

Esto hace que si en B1 escribimos Perú o Ecuador, la consulta se actualice automáticamente mostrando solo esos países. Para evitar errores de tipeo, podemos usar validación de datos en B1 con una lista desplegable que contenga los países que queremos.

Ahora, agreguemos un filtro numérico. Supongamos que queremos mostrar solo ventas mayores a un número mínimo que el usuario también pueda ingresar. Por ejemplo, la columna H tiene las ventas, y queremos que solo muestre ventas mayores a 300. La fórmula sería:

=QUERY(datos_aj; "select * where H > 300")

Al igual que con el país, queremos que ese número sea dinámico, por ejemplo, en la celda B2. Entonces reemplazamos el 300 por la referencia a B2 sin comillas, porque es un número:

=QUERY(datos_aj; "select * where H > " & B2)

Probemos con varios valores en B2 y veremos cómo se actualizan las filas mostradas.

Ahora vamos a combinar ambos filtros, país y ventas mínimas, con la condición AND. Primero hacemos la consulta con valores fijos para entender la sintaxis:

=QUERY(datos_aj; "select * where H > 100 and J = 'Colombia'")

Luego, reemplazamos los valores fijos por las celdas B2 para ventas y B1 para país, concatenando correctamente y cuidando las comillas simples para el texto:

=QUERY(datos_aj; "select * where H > " & B2 & " and J = '" & B1 & "'")

Esto permite que el usuario seleccione el país y la cantidad mínima de ventas para filtrar los datos.

Ahora, vamos a trabajar con fechas. Las fechas en QUERY deben manejarse con la función DATE para que la consulta las interprete correctamente. Supongamos que queremos filtrar por una fecha mínima. La columna de fecha, por ejemplo, es la C. La condición sería:

=QUERY(datos_aj; "select * where C >= date '2018-03-29'")

Pero queremos que esta fecha mínima sea dinámica, que el usuario la pueda cambiar en una celda, por ejemplo B3. Para ello, necesitamos convertir la fecha de B3 al formato que QUERY entiende (año-mes-día) y construir la consulta concatenando el texto. Usamos la función TEXTO para esto:

=QUERY(datos_aj; "select * where C >= date '" & TEXTO(B3; "aaaa-mm-dd") & "'")

Si queremos además agregar una fecha máxima, en B4 por ejemplo, la consulta con ambas fechas sería:

=QUERY(datos_aj; "select * where C >= date '" & TEXTO(B3; "aaaa-mm-dd") & "' and C <= date '" & TEXTO(B4; "aaaa-mm-dd") & "'")

Finalmente, podemos combinar todos los filtros: país, ventas mínimas, fecha mínima y fecha máxima en una sola consulta:

=QUERY(datos_aj; "select * where J = '" & B1 & "' and H >= " & B2 & " and C >= date '" & TEXTO(B3; "aaaa-mm-dd") & "' and C <= date '" & TEXTO(B4; "aaaa-mm-dd") & "'")

De esta manera, el usuario puede cambiar los valores en las celdas B1 a B4 y el reporte se actualiza automáticamente con los datos que cumplen todas las condiciones.

Un consejo que te doy es que, para no complicar mucho la fórmula, puedes construir la consulta en una celda aparte usando concatenación y luego usar esa celda dentro de QUERY para que sea más fácil de leer y mantener. También es importante ir probando paso a paso para detectar errores.

Algunas limitaciones de este método son que si no hay datos que cumplan las condiciones, la función QUERY devuelve un error o una tabla vacía sin mensaje claro. También, manejar múltiples selecciones para países o condiciones más complejas puede requerir soluciones más avanzadas, que veremos en próximos tutoriales.

Espero que este tutorial te haya ayudado a entender cómo hacer consultas QUERY dinámicas con input del usuario. Con esta técnica puedes crear reportes interactivos y dashboards sencillos en Google Sheets.

Conclusión

En resumen, aprendimos a construir una fórmula QUERY que permite filtrar datos dinámicamente según el país, las ventas mínimas y un rango de fechas, usando referencias a celdas para que el usuario pueda cambiar los filtros sin tocar la fórmula. Vimos cómo concatenar texto y valores numéricos, cómo manejar fechas con la función TEXTO y DATE, y cómo combinar varias condiciones con AND. Esta técnica es muy útil para crear reportes interactivos y dashboards personalizados en Google Sheets.

Como próximo paso, te recomiendo experimentar agregando más filtros o validaciones de datos para mejorar la experiencia del usuario. En futuros tutoriales profundizaremos en cómo manejar múltiples condiciones más complejas y mostrar mensajes personalizados cuando no hay datos que coincidan.

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.