Análisis de datosAvanzado15 min de lectura

Domina la función QUERY en Google Sheets

Desbloquea manipulación de datos similar a SQL en Google Sheets. Aprende la sintaxis QUERY para filtrar, ordenar, pivotar y agregar datos con fórmulas poderosas.

La función QUERY es la herramienta más poderosa para manipular datos en Google Sheets, pero la mayoría de usuarios nunca la aprenden. Si sabes SQL, QUERY te permite escribir sentencias SELECT, WHERE, GROUP BY y ORDER BY familiares directamente en fórmulas de hojas de cálculo. Si no sabes SQL, esta guía te enseñará todo lo que necesitas.

QUERY elimina la necesidad de fórmulas complejas y anidadas, tablas dinámicas y filtrados manuales. Una sola fórmula QUERY puede reemplazar 10 o más fórmulas tradicionales, haciendo tus hojas más rápidas, limpias y fáciles de mantener. Esta es la habilidad que separa a usuarios principiantes de analistas profesionales.

En esta guía completa aprenderás la sintaxis de QUERY desde lo básico hasta técnicas avanzadas. Al final, serás capaz de filtrar millones de filas, crear reportes dinámicos y construir dashboards automatizados, todo con una sola función poderosa.

Lo que necesitarás

  • Conocimiento intermedio de Google Sheets
  • Comprensión de fórmulas básicas y referencias de celdas
  • Un conjunto de datos con al menos 3 columnas para practicar (proporcionaremos ejemplos)

Guía paso a paso

1

Entiende la sintaxis básica de QUERY

Aprende la estructura fundamental de las fórmulas QUERY.

  • Sintaxis básica: =QUERY(data, query, [headers])
  • data = el rango a consultar (A1:D100)
  • query = consulta tipo SQL entre comillas ("SELECT A, B WHERE C > 100")
  • headers = número opcional de filas de encabezado (generalmente 1)
  • Referencias de columnas: Usa letras (A, B, C) o Col1, Col2, Col3
  • Ejemplo: =QUERY(A1:D100, "SELECT A, B, C", 1)

Pro Tip

Siempre incluye filas de encabezado en tu rango de datos. QUERY funciona mejor cuando los nombres de columna están en la primera fila.
2

Selecciona columnas específicas

Elige qué columnas mostrar en tus resultados.

  • Selecciona todas las columnas: =QUERY(A1:D100, "SELECT *")
  • Selecciona columnas específicas: =QUERY(A1:D100, "SELECT A, C, D")
  • Reordena columnas: =QUERY(A1:D100, "SELECT D, A, B") coloca la columna D primero
  • Usa notación Col: =QUERY(A1:D100, "SELECT Col1, Col3, Col4")
  • Renombra columnas con LABEL: =QUERY(A1:D100, "SELECT A, B LABEL A 'Nombre', B 'Ingresos'")

Pro Tip

La notación Col (Col1, Col2) es mejor que las letras cuando tu rango de datos podría cambiar, se adapta automáticamente.
3

Filtra datos con la cláusula WHERE

Usa WHERE para filtrar filas basadas en condiciones.

  • Filtro básico: =QUERY(A1:D100, "SELECT * WHERE B > 1000")
  • Filtro de texto: =QUERY(A1:D100, "SELECT * WHERE A = 'Producto A'")
  • Múltiples condiciones (AND): =QUERY(A1:D100, "SELECT * WHERE B > 1000 AND C < 5000")
  • Múltiples condiciones (OR): =QUERY(A1:D100, "SELECT * WHERE A = 'Producto A' OR A = 'Producto B'")
  • El texto contiene: =QUERY(A1:D100, "SELECT * WHERE A CONTAINS 'Gerente'")
  • Filtros de fecha: =QUERY(A1:D100, "SELECT * WHERE B > DATE '2024-01-01'")

Pro Tip

Los valores de texto en cláusulas WHERE deben usar comillas simples dentro de comillas dobles: "WHERE A = 'Texto'"
4

Ordena resultados con ORDER BY

Ordena tus resultados de consulta en orden ascendente o descendente.

  • Ordena ascendente: =QUERY(A1:D100, "SELECT * ORDER BY B")
  • Ordena descendente: =QUERY(A1:D100, "SELECT * ORDER BY B DESC")
  • Ordena por múltiples columnas: =QUERY(A1:D100, "SELECT * ORDER BY A ASC, B DESC")
  • Combina WHERE y ORDER BY: =QUERY(A1:D100, "SELECT * WHERE C > 100 ORDER BY B DESC")
  • Ordena por columna no en SELECT: =QUERY(A1:D100, "SELECT A, B ORDER BY D DESC")

Pro Tip

El orden de las cláusulas importa: SELECT, WHERE, GROUP BY, PIVOT, ORDER BY, LIMIT. Sigue esta secuencia o las consultas fallarán.
5

Agrega datos con GROUP BY

Resume datos por categorías como tablas dinámicas.

  • Suma por categoría: =QUERY(A1:D100, "SELECT A, SUM(B) GROUP BY A")
  • Cuenta por categoría: =QUERY(A1:D100, "SELECT A, COUNT(B) GROUP BY A")
  • Promedio por categoría: =QUERY(A1:D100, "SELECT A, AVG(B) GROUP BY A")
  • Múltiples agregaciones: =QUERY(A1:D100, "SELECT A, SUM(B), AVG(C), COUNT(D) GROUP BY A")
  • Agrupa por múltiples columnas: =QUERY(A1:D100, "SELECT A, B, SUM(C) GROUP BY A, B")
  • Añade LABEL para claridad: =QUERY(A1:D100, "SELECT A, SUM(B) GROUP BY A LABEL SUM(B) 'Ingresos Totales'")

Pro Tip

Cuando usas GROUP BY, cada columna en SELECT debe estar en GROUP BY o ser una agregación (SUM, AVG, COUNT, etc.).
6

Usa funciones de agregación

Domina SUM, COUNT, AVG, MIN, MAX para análisis de datos.

  • SUM: =QUERY(A1:D100, "SELECT A, SUM(B) GROUP BY A") suma valores numéricos
  • COUNT: =QUERY(A1:D100, "SELECT A, COUNT(B) GROUP BY A") cuenta celdas no vacías
  • AVG: =QUERY(A1:D100, "SELECT A, AVG(B) GROUP BY A") calcula promedios
  • MIN/MAX: =QUERY(A1:D100, "SELECT MIN(B), MAX(B)")
  • Combina funciones: =QUERY(A1:D100, "SELECT A, SUM(B), AVG(C), COUNT(*) GROUP BY A")

Pro Tip

Usa COUNT(*) para contar todas las filas incluyendo vacías, COUNT(B) solo cuenta valores no vacíos en columna B.
7

Limita y formatea resultados

Controla cuántas filas se devuelven y formatea la salida.

  • Limita resultados: =QUERY(A1:D100, "SELECT * ORDER BY B DESC LIMIT 10") muestra los 10 primeros
  • Salta filas con OFFSET: =QUERY(A1:D100, "SELECT * LIMIT 10 OFFSET 5") salta las primeras 5 filas
  • Formatea números: =QUERY(A1:D100, "SELECT A, B FORMAT B '$#,##0.00'")
  • Formatea fechas: =QUERY(A1:D100, "SELECT A, B FORMAT B 'yyyy-mm-dd'")
  • Formatea porcentajes: =QUERY(A1:D100, "SELECT A, B FORMAT B '0.00%'")

Pro Tip

LIMIT es perfecto para reportes "Top 10". Combina con ORDER BY DESC para obtener los valores más altos primero.
8

Técnicas avanzadas y mejores prácticas

Usa consultas dinámicas, PIVOT y consulta entre hojas.

  • WHERE dinámico con referencia de celda: =QUERY(A1:D100, "SELECT * WHERE B > "&E2) usa el valor en E2
  • Consulta otra hoja: =QUERY(Sheet2!A1:D100, "SELECT * WHERE B > 1000")
  • Datos PIVOT: =QUERY(A1:D100, "SELECT A, SUM(B) GROUP BY A PIVOT C")
  • Combina múltiples consultas con llaves: ={QUERY(A1:D10, "SELECT *"); QUERY(A20:D30, "SELECT *")}
  • Maneja errores: =IFERROR(QUERY(A1:D100, "SELECT * WHERE B > 1000"), "Sin resultados")

Pro Tip

Al construir consultas dinámicas con referencias de celda, ten cuidado con las comillas. El texto necesita: "WHERE A = '"&E2&"'"

Conclusión

Ahora tienes dominio sobre la función más poderosa en Google Sheets. Desde sentencias SELECT simples hasta agregaciones complejas con GROUP BY y tablas PIVOT, puedes manipular datos como un profesional de SQL, todo dentro de fórmulas de hojas de cálculo.

Sin embargo, si te encuentras escribiendo fórmulas QUERY complejas repetidamente, hay una forma más inteligente. ModelMonkey puede generar fórmulas QUERY automáticamente con prompts simples de IA. En lugar de memorizar sintaxis y depurar errores de comillas, simplemente dile a ModelMonkey lo que necesitas:

  • "Muéstrame el ingreso total por producto, ordenado de mayor a menor"
  • "Filtra ventas mayores a $1000 en los últimos 30 días y agrupa por vendedor"
  • "Crea un pivot que muestre el ingreso mensual por región"

ModelMonkey escribe la fórmula QUERY, explica la sintaxis e incluso sugiere optimizaciones. Convierte horas de prueba y error en fórmulas funcionales instantáneas.

¿Listo para dejar de luchar con la sintaxis de QUERY? Elige un plan de ModelMonkey y deja que la IA escriba tus fórmulas.

Preguntas frecuentes

¿Qué es la función QUERY en Google Sheets?

QUERY es una función poderosa que usa sintaxis similar a SQL para filtrar, ordenar y agregar datos en Google Sheets. Sintaxis: =QUERY(data, query, headers). Admite cláusulas SELECT, WHERE, GROUP BY, ORDER BY, PIVOT y LIMIT, lo que la hace más flexible que las tablas dinámicas o fórmulas tradicionales para manipulación de datos complejos.

¿Cómo uso WHERE en QUERY de Google Sheets?

WHERE filtra filas basadas en condiciones. Sintaxis: =QUERY(A1:D100, "SELECT * WHERE B > 1000"). Para texto, usa comillas simples: "WHERE A = 'Producto'". Combina condiciones con AND/OR: "WHERE B > 1000 AND C < 5000". Usa CONTAINS para coincidencias parciales: "WHERE A CONTAINS 'Gerente'".

¿Cómo agrupo datos en QUERY como una tabla dinámica?

Usa GROUP BY con funciones de agregación. Sintaxis: =QUERY(A1:D100, "SELECT A, SUM(B) GROUP BY A"). Esto suma la columna B para cada valor único en la columna A. Cada columna en SELECT debe estar en GROUP BY o ser una agregación (SUM, AVG, COUNT, MIN, MAX). Añade LABEL para renombrar columnas de resultado.

¿Cuál es la diferencia entre QUERY y FILTER en Google Sheets?

FILTER devuelve filas que coinciden con condiciones pero no puede agregar, ordenar dentro de la fórmula, o seleccionar columnas específicas. QUERY hace todo esto con sintaxis SQL. Usa FILTER para filtrado de filas simple, QUERY para análisis complejo con WHERE, GROUP BY, ORDER BY y agregaciones. QUERY es más poderosa pero tiene una curva de aprendizaje más pronunciada.

¿Cómo hago dinámicas las fórmulas QUERY con referencias de celda?

Usa concatenación para insertar valores de celda en cadenas de consulta: =QUERY(A1:D100, "SELECT * WHERE B > "&E2). Para valores de texto, añade comillas: =QUERY(A1:D100, "SELECT * WHERE A = '"&E2&"'"). Para fechas: "WHERE B > DATE '"&TEXT(E2, "yyyy-mm-dd")&"'". Las consultas dinámicas se actualizan automáticamente cuando las celdas referenciadas cambian.