QUERY en Google Sheets: la función que reemplaza cinco fórmulas

En este artículo
La fórmula que jubila a cinco de tus favoritas
Hay un momento en la vida de todo usuario de hojas de cálculo en que su archivo se vuelve un monstruo: una columna con FILTRAR, otra con BUSCARV, una tabla auxiliar para sumar por mes, otra para ordenar… cinco fórmulas encadenadas para responder una pregunta simple como “¿cuánto vendió cada asesor en marzo?”. Funciona, pero es frágil: mueves una columna y todo se rompe.
QUERY hace eso — filtrar, ordenar, agrupar, sumar, contar — en una sola fórmula. Es, sin exagerar, la función más potente de Google Sheets. Tiene fama de difícil porque usa un mini-lenguaje parecido a SQL, pero la verdad es que con cinco o seis patrones cubres el 95% de los casos. Vamos a por ellos.
La sintaxis, sin misterio
=QUERY(datos; "consulta"; [encabezados])
- datos: el rango a analizar, por ejemplo
A1:E1000. - consulta: el texto entre comillas con las instrucciones: qué columnas traer, cómo filtrar, cómo ordenar.
- encabezados (opcional): cuántas filas de encabezado tiene tu rango. Casi siempre será
1.
Imaginemos una tabla real: una papelería en Armenia lleva sus ventas con columnas A (Fecha), B (Vendedor), C (Producto), D (Cantidad) y E (Total). Rango: A1:E500. Con esa tabla haremos todos los ejemplos.
La consulta más simple posible — traerlo todo, como un espejo:
=QUERY(A1:E500; "select *"; 1)
No parece gran cosa. Ahora filtra solo las ventas de “Carolina”:
=QUERY(A1:E500; "select * where B = 'Carolina'"; 1)
Dos observaciones que te ahorrarán dolores de cabeza desde ya. Primera: el texto se compara entre comillas simples dentro de las comillas dobles de la fórmula — 'Carolina', no "Carolina". Segunda: QUERY distingue mayúsculas y minúsculas en texto, así que “carolina” no encontrará a “Carolina”. Anótalo; este detalle muerde a todo el mundo una vez.
Filtrar como un profesional: where, and, or, like
El where es donde QUERY empieza a pagar su fama. Algunas consultas de la vida real:
=QUERY(A1:E500; "select B, C, E where E > 200000"; 1)
Vendedor, producto y total de las ventas mayores a 200.000 pesos. ¿Y las de marzo de 2026 con cantidad mayor a 10?
=QUERY(A1:E500; "select * where A >= date '2026-03-01' and A <= date '2026-03-31' and D > 10"; 1)
Fíjate en la sintaxis de fechas: date '2026-03-01', con la palabra date delante y el formato año-mes-día. Las fechas son el punto donde más gente se estrella con QUERY; si tu filtro de fechas no devuelve nada, el 99% de las veces el problema es el formato.
Para búsquedas parciales de texto tienes dos aliados:
=QUERY(A1:E500; "select * where C like '%cuaderno%'"; 1) =QUERY(A1:E500; "select * where C contains 'tinta'"; 1)
like con % como comodín (empieza, termina o contiene), contains para “contiene este texto”. La diferencia práctica es mínima; usa el que te resulte más legible.
¿Varias condiciones? Combina con and / or, y agrupa con paréntesis cuando mezcles ambos, igual que en matemáticas: where (B = 'Carolina' or B = 'Andrés') and E > 100000.
Resumir datos: group by, sum, count, avg
Aquí es donde QUERY reemplaza de verdad a un ejército de fórmulas. ¿Total vendido por cada vendedor?
=QUERY(A1:E500; "select B, sum(E) group by B"; 1)
Una línea. Eso que antes requería un SUMAR.SI por cada nombre, o una tabla dinámica entera. ¿Y cuántas ventas hizo cada uno, ordenadas de mayor a menor?
=QUERY(A1:E500; "select B, count(C), sum(E) group by B order by sum(E) desc"; 1)
Vendedor, número de ventas y total, ordenados por total descendente. Tres métricas, un ranking completo, cero tablas auxiliares.
Las funciones de agregación disponibles son las que esperarías: sum, count, avg (promedio), min, max. Y un par de cláusulas que redondean el cuadro:
order by: ordena por cualquier columna, conascodesc. Puedes ordenar por varias:order by B asc, E desc.limit:limit 10al final te da el top 10. Combinado conorder by sum(E) desc, tienes tu ranking de mejores vendedores en una línea.label: renombra los encabezados feos que genera la agregación:label sum(E) 'Total vendido', count(C) 'N.º ventas'. Tus reportes se ven profesionales sin retoques manuales.
Un ejemplo completo, del tipo que sí se usa en una oficina: top 5 productos por ingresos en el primer trimestre, con encabezados bonitos:
=QUERY(A1:E500; "select C, sum(D), sum(E) where A >= date '2026-01-01' and A <= date '2026-03-31' group by C order by sum(E) desc limit 5 label sum(D) 'Unidades', sum(E) 'Ingresos'"; 1)
Léela en voz alta y verás que casi es español: selecciona producto, suma unidades, suma ingresos, donde la fecha esté en el trimestre, agrupa por producto, ordena por ingresos descendente, trae 5, y ponles estos títulos. Cuando el lenguaje se vuelve legible, deja de dar miedo.
El truco de pivot: tablas cruzadas en una fórmula
QUERY tiene una cláusula poco conocida que crea tablas cruzadas — filas por un criterio, columnas por otro — sin tocar las tablas dinámicas:
=QUERY(A1:E500; "select B, sum(E) group by B pivot month(A)"; 1)
Vendedores en las filas, meses en las columnas, totales en el cruce. Es el reporte que todo gerente quiere ver y que normalmente toma media hora armar a mano. Aquí sale de una celda.
Si las tablas cruzadas te gustan pero prefieres el camino visual de arrastrar y soltar, hacer un dashboard en Excel que impresione te muestra el equivalente del otro lado; y para presentar estos resultados, elegir el gráfico correcto marca la diferencia entre un reporte que se archiva y uno que se entiende.
Los cuatro errores que todos cometemos (y su arreglo)
- Mezclar comillas: la fórmula usa comillas dobles por fuera y simples por dentro para texto. Si necesitas una comilla simple dentro del texto (un apellido como "D'Angelo"), duplícala:
'D''Angelo'. Sí, es feo. Funciona. - Tipos de datos mezclados en una columna: si la columna E tiene números y algún texto ("pendiente"), QUERY decide el tipo por mayoría y los valores minoritarios salen como vacíos. La columna de números debe tener solo números: limpia la fuente primero.
- Encabezados duplicados o vacíos: QUERY se confunde si dos columnas se llaman igual. Nombres únicos y descriptivos en la fila 1, siempre.
- Referenciar columnas por letra después de un IMPORTRANGE: cuando los datos vienen de otra hoja vía IMPORTRANGE, no existen las letras: se usan
Col1, Col2, Col3.... Ejemplo:=QUERY(IMPORTRANGE("url";"Ventas!A:E"); "select Col2, sum(Col5) group by Col2"; 1).
Ese último punto merece subrayarse porque es oro puro: QUERY + IMPORTRANGE es la combinación que convierte varias hojas dispersas en un sistema de reportes centralizado. Cada sucursal alimenta su hoja, tu QUERY las resume todas. Sin macros, sin código, sin pagar nada.
¿Y cuándo QUERY ya no alcanza?
Seamos honestos: QUERY es potentísima, pero tiene techo. No hace bucles, no envía correos, no puede modificar otras celdas. Cuando tus necesidades pasan de "analizar datos" a "hacer cosas automáticamente" — renombrar archivos, mandar reportes por email cada lunes, limpiar datos con lógica compleja — el siguiente escalón es automatizar lo repetitivo con Apps Script desde cero, que no exige ser programador para los primeros pasos.
Mi sugerencia para esta semana: toma una tabla real que uses — ventas, gastos, inventario — y reescribe con QUERY la fórmula más enredada que tengas. La primera te tomará veinte minutos y tres intentos. La quinta te tomará treinta segundos. Y en algún punto mirarás tus viejas columnas auxiliares con una mezcla de nostalgia y vergüenza, como quien mira fotos de su corte de pelo de 2010. La referencia oficial está en la documentación de QUERY de Google, por si quieres explorar cláusulas avanzadas como skipping o formatos de número.
