Análisis de datos

Ordenar con fórmula en Google Sheets: SORT, SORTBY y QUERY

ModelMonkey25 de junio de 20268 min de lectura

=SORT toma un arreglo y lo ordena por una o más columnas dentro de ese mismo arreglo.

=SORT(rango, columna_orden, es_ascendente, [columna_orden2], [es_ascendente2], ...)

Un caso de uso real para un reporte al directorio: tienes 47 SKUs en una pestaña Ingresos con columnas para nombre de SKU (A), región (B), ingresos Q2 (C) y margen bruto % (D). Quieres una vista ordenada en tu pestaña Resumen sin tocar la fuente.

=SORT('Ingresos'!A2:D48, 3, FALSE)

Esto produce las 47 filas ordenadas por ingresos Q2 en orden descendente. Si los ingresos van de $80K a $2.4M entre SKUs, el producto con $2.4M queda arriba, donde el directorio realmente lo busca.

¿Necesitas múltiples criterios? Agrega columnas:

=SORT('Ingresos'!A2:D48, 2, TRUE, 3, FALSE)

Región de forma ascendente, luego ingresos descendentes dentro de cada región. Dos argumentos, sin columnas auxiliares, sin pasos manuales antes de refrescar la presentación.

Una limitación importante: =SORT solo puede ordenar por columnas que estén dentro del rango que estás ordenando. Si tu criterio de orden vive en una columna diferente que no incluyes en la salida, =SORT no puede verla. Para eso existe =SORTBY.


SORTBY para ordenamiento multi-criterio con fórmula

=SORTBY desacopla el rango de salida de las claves de ordenamiento. Las claves no tienen que aparecer en la salida. Según la documentación oficial de la función SORTBY en Google Sheets Help, la función admite hasta 64 pares de claves de orden independientes del rango de salida.

=SORTBY(rango, rango_orden1, criterio1, [rango_orden2], [criterio2], ...)

Ejemplo práctico: tu pestaña Negocios tiene nombre del deal (A), etapa (B), ARR (C) y fecha de cierre (D), pero quieres una salida que muestre solo nombre y ARR, ordenada por fecha de cierre ascendente, sin incluir esa fecha en la salida.

=SORTBY('Negocios'!A2:C, 'Negocios'!D2:D, 1)

La clave de orden (D2:D) define el criterio, pero la salida solo muestra las columnas A a C. Limpio para un resumen al directorio donde no quieres exponer las fechas de cierre.

En la práctica, 3 claves cubren casi todos los escenarios: territorio, tier de cuenta y ARR.

Para un DCF de sindicato bancario donde ordenas empresas comparables por margen EBITDA descendente y luego por EV/EBITDA ascendente dentro de cada banda de margen:

=SORTBY(
  'Comps'!A2:F30,
  'Comps'!D2:D30, -1,
  'Comps'!E2:E30, 1
)

El recálculo sobre un dataset de 5,000 filas tarda alrededor de 40ms con una conexión moderna, suficientemente rápido para que no lo notes en un flujo de cierre trimestral.


Combinar ordenamiento por fórmula con FILTER

Aquí es donde los ordenamientos por fórmula justifican su lugar en un modelo real. =FILTER reduce tu dataset a las filas que cumplen la condición; al envolver el resultado en =SORT (o =SORTBY) lo ordenas. Sin columnas auxiliares, sin rangos intermedios, sin riesgo de que el filtro y el orden queden desincronizados.

=SORT(
  FILTER(
    'P&L'!A:E,
    'P&L'!C:C >= Supuestos!$B$3,
    'P&L'!D:D = Supuestos!$B$4
  ),
  3, FALSE
)

Esto filtra el P&L para las filas donde la fecha de ingreso sea igual o posterior a la fecha de inicio en Supuestos B3 y la región coincida con B4, y luego ordena la salida filtrada por la columna 3 (ingresos) de forma descendente. Cambia las celdas de supuestos y la salida ordenada se actualiza sola.

Un análisis de margen de contribución por SKU se ve casi idéntico. Filtra los SKUs activos, ordena por margen de contribución descendente y muestra el resultado en tu pestaña Cascada:

=SORT(
  FILTER(
    'Detalle SKU'!A2:G,
    'Detalle SKU'!B2:B = "Activo",
    'Detalle SKU'!F2:F > 0
  ),
  6, FALSE
)

Esto trae solo los SKUs activos con margen de contribución positivo, ordenados de mayor a menor. En un catálogo de 47 SKUs con $4.2M de utilidad bruta, en 2 segundos puedes identificar cuáles 8 productos representan el 80% de esa utilidad, sin tabla dinámica ni filtro manual.


Cuándo usar =QUERY en lugar de =SORT

=QUERY es SQL simplificado dentro de Sheets. Para ordenar, es más verboso que =SORT, pero permite combinar ordenamiento con selección de columnas, agregación y renombramiento de etiquetas en una sola fórmula.

=QUERY(
  'Pipeline'!A:F,
  "SELECT A, C, D WHERE B = 'Enterprise' ORDER BY D DESC LIMIT 20",
  1
)

Esto trae solo las columnas que necesitas, filtra por segmento, ordena por valor del deal y limita la salida a 20 filas. Según la referencia del lenguaje de consulta de Google Visualization API, que es el motor que usa =QUERY internamente, ORDER BY trabaja con letras de columna (A, B, C) en lugar de posiciones numéricas, a diferencia de =SORT.

Cuándo preferir =QUERY sobre =SORT:

  • Necesitas selección de columnas (no solo reordenamiento)
  • Estás agregando datos con GROUP BY y ordenando los resultados
  • Quieres un LIMIT en la cantidad de filas de salida
  • La lógica del filtro es suficientemente compleja como para que SQL sea más legible que argumentos FILTER anidados

Cuándo quedarte con =SORT o =SORTBY:

  • Quieres la fila completa sin manipulación de columnas
  • Necesitas ordenar por una columna externa que no está en la salida
  • Ya estás encadenando con otras funciones de arreglo y QUERY rompería la cadena

El problema de arquitectura que resuelve el ordenamiento por fórmula

El problema de fondo no son los mecanismos de ordenamiento, sino la integridad de la fuente en un modelo vinculado.

En un modelo de tres estados financieros, los datos mensuales del P&L viven en una pestaña. El estado de flujos de efectivo los referencia. También lo hace el cuadro de FCFF. Y el análisis de retornos. Si alguien ejecuta Datos → Ordenar rango en esa pestaña fuente durante una revisión del modelo (lo que ocurre con frecuencia, especialmente con colaboradores que no son el dueño del modelo), cada función OFFSET, INDEX y cada rango con nombre que apunta a esa pestaña empieza a devolver la fila incorrecta.

Un ordenamiento por fórmula en una pestaña de salida separada rompe esa dependencia. La pestaña Ingresos nunca se mueve. La vista ordenada en Resumen o Board Pack se actualiza sola. Las 23 referencias descendentes permanecen limpias.

Por eso los errores de fórmulas cruzadas tras ordenar en rangos filtrados son tan frecuentes: la ruta de Datos → Ordenar y las referencias basadas en fórmulas no se llevan bien. El ordenamiento por fórmula evita esa clase de problema por completo.

Si estás construyendo este tipo de arquitectura y te encuentras escribiendo los mismos patrones de SORT/FILTER una y otra vez en distintas pestañas, ModelMonkey puede generar la fórmula anidada a partir de una descripción en texto plano de lo que necesitas, incluyendo el enlace de instalación directo en modelmonkeys.ai/install. Útil cuando estás tres niveles adentro de SORTBY y FILTER y necesitas que la sintaxis quede bien desde la primera vez.


Preguntas frecuentes sobre ordenar con fórmula en Google Sheets

¿Cuál es la diferencia principal entre =SORT y =SORTBY? =SORT ordena por columnas que deben estar dentro del rango de salida. =SORTBY permite usar cualquier columna como clave de orden, independientemente de si aparece en la salida. Si necesitas ordenar por una fecha pero no quieres mostrarla, usa =SORTBY.

¿Puedo ordenar con fórmula en Google Sheets sin afectar los datos originales? Sí. Coloca la fórmula =SORT o =SORTBY en una pestaña diferente a la fuente. La pestaña original no se modifica; la fórmula genera una copia ordenada de forma dinámica.

¿Por qué mis referencias se rompen después de usar Datos → Ordenar rango? Porque esa función reordena físicamente las filas. Cualquier fórmula que apunte a una posición fija en esa hoja (por ejemplo, ='Ingresos'!C5) empieza a leer la fila incorrecta. Las fórmulas =SORT y =SORTBY no mueven los datos originales, así que las referencias descendentes permanecen estables.

¿=QUERY puede reemplazar a =SORT en todos los casos? No. =QUERY es más potente para selección de columnas, agregación y límite de filas, pero su sintaxis SQL no encadena con naturalidad junto a FILTER, ARRAYFORMULA u otras funciones de arreglo. Para ordenamientos simples o encadenados, =SORT y =SORTBY son más limpios y predecibles.

¿Cuántas claves de orden soporta =SORTBY? Según la documentación oficial de Google Sheets, hasta 64 pares de claves. En la práctica, 3 claves (por ejemplo: región, tier de cliente y ARR) cubren casi cualquier escenario de análisis financiero u operativo.

¿Funciona el ordenamiento por fórmula con rangos dinámicos que cambian de tamaño? Sí, si defines el rango con columnas completas (por ejemplo, 'Ingresos'!A:D en lugar de 'Ingresos'!A2:D48). De esa forma, cuando se agregan nuevas filas a la fuente, la fórmula las incluye automáticamente sin necesidad de ajustar el rango manualmente.