=SORTBY desacopla o intervalo de saída das chaves de ordenação. As chaves não precisam aparecer na saída.
=SORTBY(intervalo, intervalo_ordenação1, ordem1, [intervalo_ordenação2], [ordem2], ...)
Exemplo prático: sua aba Negócios tem nome do negócio (A), etapa (B), ARR (C) e data de fechamento (D), mas você quer uma saída que exiba apenas nome e ARR, ordenada por data de fechamento crescente, sem incluir a data na saída.
=SORTBY('Negócios'!A2:C, 'Negócios'!D2:D, 1)
A chave de ordenação (D2:D) define a sequência, mas a saída mostra apenas as colunas A a C. Ideal para um resumo executivo onde você não quer expor as datas brutas de fechamento.
O =SORTBY suporta até 64 pares de chaves de ordenação, mais do que qualquer modelo real vai precisar. Na prática, 3 chaves cobrem quase todos os cenários: território, depois tier da conta, depois ARR.
Para uma análise de empresas comparáveis em um DCF, ordenando por margem EBITDA decrescente e depois por EV/EBITDA crescente dentro de cada faixa de margem:
=SORTBY(
'Comps'!A2:F30,
'Comps'!D2:D30, -1,
'Comps'!E2:E30, 1
)
Conforme os limites documentados do Google Sheets para fórmulas de array (junho de 2026), o recálculo em uma base de 5.000 linhas leva cerca de 40ms em uma conexão moderna: tempo suficientemente baixo para não impactar um fluxo de fechamento trimestral.
Combinando ordenação por fórmula com FILTER
É aqui que as fórmulas de ordenação ganham seu lugar em um modelo real. =FILTER reduz o conjunto de dados às linhas que atendem aos critérios; envolver o resultado em =SORT (ou =SORTBY) ordena a saída. Sem colunas auxiliares, sem intervalo intermediário, sem risco de o filtro e a ordenação ficarem dessincronizados.
=SORT(
FILTER(
'DRE'!A:E,
'DRE'!C:C >= Premissas!$B$3,
'DRE'!D:D = Premissas!$B$4
),
3, FALSE
)
Isso filtra a DRE pelas linhas em que a data de receita é igual ou posterior à data inicial em Premissas B3 e a região corresponde a B4, depois ordena a saída filtrada pela coluna 3 (receita) em ordem decrescente. Altere as células de premissas e a saída ordenada se atualiza automaticamente.
Uma análise de margem de contribuição por SKU tem estrutura quase idêntica. Filtre os SKUs em escopo, ordene por margem de contribuição decrescente e exiba na aba Cascata:
=SORT(
FILTER(
'Detalhe SKU'!A2:G,
'Detalhe SKU'!B2:B = "Ativo",
'Detalhe SKU'!F2:F > 0
),
6, FALSE
)
Isso traz apenas os SKUs ativos com margem de contribuição positiva, do maior para o menor. Em um catálogo de 47 SKUs gerando R$ 6,3 milhões de lucro bruto, você identifica em 2 segundos quais 8 SKUs respondem por 80% desse resultado - sem tabela dinâmica, sem etapa manual de filtragem.
Quando usar =QUERY
=QUERY é um SQL simplificado dentro do Sheets. Para ordenação, é mais verboso que =SORT, mas permite combinar ordenação com seleção de colunas, agregação e renomeação de rótulos em uma única fórmula.
=QUERY(
'Pipeline'!A:F,
"SELECT A, C, D WHERE B = 'Enterprise' ORDER BY D DESC LIMIT 20",
1
)
Isso traz apenas as colunas desejadas, filtra por segmento, ordena pelo valor do negócio e limita a 20 linhas. Conforme a documentação oficial da Google Visualization API Query Language (junho de 2026), ORDER BY opera sobre letras de coluna (A, B, C) em vez de posições numéricas - detalhe que causa confusão para quem vem do =SORT.
=SORT vs. =SORTBY vs. =QUERY: quando usar cada um
| Critério | =SORT | =SORTBY | =QUERY |
|---|---|---|---|
| Ordenar por coluna dentro da saída | Sim | Sim | Sim |
| Ordenar por coluna fora da saída | Não | Sim | Não |
| Selecionar colunas específicas | Não | Não | Sim |
| Agregação (GROUP BY) | Não | Não | Sim |
| Limitar número de linhas (LIMIT) | Não | Não | Sim |
| Encadeia com FILTER/ARRAYFORMULA | Nativo | Nativo | Limitado |
| Sintaxe para múltiplas chaves | Simples | Simples | Verbosa |
| Melhor caso de uso | Visão ordenada completa | Resumos sem expor colunas auxiliares | Relatórios tipo SQL com agregação |
O problema de arquitetura que a ordenação por fórmula resolve
O problema mais profundo não está na mecânica de ordenação, mas na integridade da fonte em um modelo encadeado.
Em um modelo de três demonstrações, os dados mensais brutos da DRE ficam em uma aba. O fluxo de caixa referencia essa aba. O schedule de FCFF também. A análise de retorno também. Se alguém usar Dados → Classificar nessa aba de fonte durante uma revisão do modelo - o que acontece com frequência quando há colaboradores que não são os donos do modelo - cada OFFSET, INDEX e intervalo nomeado apontando para aquela aba passa a retornar a linha errada.
Uma ordenação por fórmula em uma aba de saída separada quebra essa dependência. A aba Receita nunca muda de posição. A visão ordenada em Resumo ou Pacote Executivo se atualiza sozinha. As 23 referências downstream continuam funcionando corretamente.
É também por isso que quebras de fórmula em intervalos filtrados após uma ordenação manual são um problema tão recorrente: o caminho de Dados → Classificar e as referências baseadas em fórmulas não convivem bem. A ordenação por fórmula elimina esse problema por completo.
Se você está construindo esse tipo de arquitetura e percebe que escreve os mesmos padrões de SORT/FILTER repetidamente em várias abas, o ModelMonkey consegue gerar a fórmula aninhada a partir de uma descrição simples do que você quer. É útil quando você está três níveis dentro de =SORTBY e =FILTER e precisa acertar a sintaxe na primeira tentativa.
Perguntas frequentes
Posso usar =SORT com dados que chegam de outra planilha via IMPORTRANGE?
Sim. Envolva o =IMPORTRANGE diretamente no =SORT: =SORT(IMPORTRANGE("url","Aba!A2:D"), 3, FALSE). O tempo de atualização vai depender da latência do IMPORTRANGE, não da ordenação em si.
Por que minha fórmula =SORT retorna erro #REF! depois que alguém editou a aba de origem?
Provavelmente alguém deletou ou moveu colunas na aba de fonte. O =SORT referencia posições numéricas de coluna, então se a coluna 3 deixou de ser receita, o erro ou o resultado errado aparecem silenciosamente. Use intervalos nomeados na aba de fonte para tornar as referências robustas a reorganizações.
=SORTBY é mais lento que =SORT em bases grandes?
Na prática, a diferença é insignificante para os volumes típicos de uma planilha operacional (até 50.000 linhas). O custo de performance em Sheets vem principalmente de funções voláteis como =NOW() e =INDIRECT(), não da complexidade da ordenação em si.
Posso ordenar por uma cor de célula usando fórmula?
Não diretamente. =SORT e =SORTBY operam sobre valores, não sobre formatação. A única forma de ordenar por cor no Sheets é via Apps Script ou atribuindo um valor numérico à cor em uma coluna auxiliar e ordenando por ela.
A ordenação por fórmula funciona com intervalos dinâmicos que crescem com novos dados?
Sim. Use uma referência de coluna aberta na fonte, como 'Receita'!A2:D sem especificar a última linha. O =SORT vai incluir automaticamente as novas linhas à medida que forem adicionadas, sem precisar ajustar a fórmula.