Análise de dados

Sintaxe Col1 e Col2 no QUERY do Google Sheets

Marc Sean18 de abril de 20269 min de leitura

Col1, Col2 e ColN no QUERY do Google Sheets não se referem às colunas A, B, C da planilha - eles se referem à 1ª, 2ª e Nª coluna do intervalo que você passou para a função. Se o seu intervalo é C1:F100, então Col1 é a coluna C, Col2 é D, Col3 é E e Col4 é F. É só isso. Em abril de 2026, esse único mal-entendido é responsável por mais erros #VALUE! e erros de parse em fórmulas QUERY do que qualquer outro equívoco de sintaxe.

A função QUERY utiliza a Linguagem de Consulta da Visualization API do Google, que suporta 11 cláusulas distintas (select, where, group by, pivot, order by, limit, offset, label, format, options, skipping). A notação ColN é a forma como essa linguagem identifica colunas quando não pode usar cabeçalhos nomeados - e entender o porquê disso importa mais do que decorar a sintaxe.

Como a Sintaxe Col1 Col2 se Mapeia para as Colunas Reais da Planilha

O número em ColN representa a posição da coluna contando da esquerda para a direita a partir da primeira coluna do seu intervalo. Veja como esse mapeamento funciona em diferentes intervalos:

IntervaloCol1Col2Col3Col4Col5
A:DABCD-
B:EBCDE-
C:FCDEF-
Receita!D:HDEFGH

Então =QUERY(C1:F100, "SELECT Col1, Col3 WHERE Col2 > 1000") seleciona as colunas C e E, com filtro na coluna D. Escreva SELECT C, E WHERE D > 1000 e o QUERY retorna um erro de parse - ele não aceita letras de coluna nesse contexto.

A confusão se agrava porque a documentação do =QUERY nas páginas de ajuda do Google Sheets usa exemplos com letras de coluna e exemplos com ColN em lugares diferentes, sem deixar claro qual sintaxe se aplica em cada situação.

Por que a Sintaxe ColN Quebra Quando Você Move Colunas

Inserir uma coluna antes do seu intervalo faz com que toda referência ColN dentro da sua consulta se desloque silenciosamente. A fórmula não retorna erro - ela simplesmente passa a retornar dados errados.

Imagine que sua fórmula é =QUERY(B:E, "SELECT Col1, Col2, Col4 WHERE Col3 = 'Ativo'"). Ela está lendo as colunas B, C, E onde D contém "Ativo." Alguém insere uma coluna em C para adicionar um campo de observações. Agora o intervalo B:E captura a nova coluna C, sua antiga coluna C vira Col3, e sua antiga coluna D (o filtro "Ativo") passa a ser Col4. A fórmula continua rodando. Só que agora ela está respondendo uma pergunta diferente da que você escreveu.

É por isso que travar intervalos com limites explícitos (B2:E5000 em vez de B:E) resolve apenas parcialmente o problema. A correção de verdade é usar intervalos nomeados ou documentar o mapeamento de colunas em um comentário visível. Conforme a referência da Visualization API Query Language do Google, os índices ColN são sempre avaliados no momento da execução da consulta em relação à tabela de dados recebida - não existe vinculação estática.

Usando Critérios Dinâmicos no QUERY com a Sintaxe Col

Cláusulas WHERE fixas no código envelhecem mal. Trimestres acabam, filtros mudam, alguém esquece de atualizar a fórmula. O padrão que se sustenta é vincular os critérios do filtro a uma célula:

=QUERY(B2:F5000,
  "SELECT Col1, Col3, Col5
   WHERE Col4 = date '"&TEXT(A2,"yyyy-mm-dd")&"'",
  1)

O TEXT(A2,"yyyy-mm-dd") força a data para o formato exato que o parser do QUERY espera. Use qualquer outro formato e você obtém um erro de tipo. Isso não é uma peculiaridade do QUERY - está incorporado na especificação da Visualization API: literais de data precisam seguir o ISO 8601 (yyyy-MM-dd), conforme documentado na Query Language Reference do Google.

Para filtros de texto, o mesmo princípio se aplica:

=QUERY(B2:F5000,
  "SELECT Col1, Col3, Col5
   WHERE Col2 = '"&A1&"'",
  1)

Omita as aspas internas e o QUERY tentará avaliar o valor da célula como um nome de coluna. Inclua-as e ele o trata como um literal de texto. O 1 no final indica ao QUERY que a primeira linha é um cabeçalho - omita esse argumento e o QUERY tratará sua linha de cabeçalho como dado.

Intervalos Combinados e o Reinício do ColN

Quando você concatena dois intervalos com chaves - {Plan1!A:D, Plan2!E:G} - o QUERY trata o resultado como uma tabela plana única. O ColN recomeça do Col1 na coluna mais à esquerda do intervalo combinado. A coluna E de Plan2 vira Col5 (ou a posição que ela ocupar na tabela mesclada), não Col1.

Isso tem impacto direto em consolidações entre abas. Um padrão comum em relatórios para gestão ou investidores:

=QUERY(
  {Contas!A2:C, IFERROR(
    VLOOKUP(Contas!A2:A, Negócios!A:D, {2,3,4}, 0),
    {"","",""})},
  "SELECT Col1, Col2, Col4, Col5, Col6
   WHERE Col3 = 'Enterprise'
   ORDER BY Col6 DESC",
  0
)

O intervalo combinado tem 6 colunas no total: 3 de Contas (A, B, C → Col1, Col2, Col3) e 3 do resultado do VLOOKUP (→ Col4, Col5, Col6). O IFERROR envolvendo o VLOOKUP preenche com strings vazias as linhas de Contas sem negócio correspondente - o que vai cobrir cerca de 12 a 15% das linhas em qualquer base de dados real após algumas semanas de uso.

O 0 no final (contagem de linhas de cabeçalho) é intencional aqui, já que estamos construindo o intervalo programaticamente em vez de puxar de uma aba que já tenha cabeçalhos na linha 1.

Como Lidar com a Sintaxe ColN em Bases de Dados Grandes

O QUERY roda inteiramente no navegador, na infraestrutura do Google. Em intervalos com 4.800 números e 200 strings de texto, é praticamente instantâneo. Em 50.000 linhas com múltiplos cruzamentos entre abas, o atraso no recálculo começa a ser perceptível - especialmente se a planilha recalcula a cada edição. O Google Sheets tem limite de 10 milhões de células por arquivo, e o timeout de execução de 30 segundos do QUERY se aplica antes de você atingir esse limite.

Algumas práticas que de fato ajudam em escala:

A primeira é delimitar o intervalo. B2:F (aberto) força o QUERY a varrer todas as linhas até o limite da planilha. B2:F5000 define um teto. Se sua base crescer além desse limite, os resultados serão truncados - mas para a maioria dos dashboards operacionais, um intervalo limitado troca um risco de incorreção por ganho de velocidade.

A segunda é a ordem dos filtros. Coloque a cláusula WHERE mais seletiva primeiro. WHERE Col3 = 'Ganho' AND Col5 > DATE '2026-01-01' roda mais rápido do que as mesmas condições invertidas, se Col3 eliminar 90% das linhas.

A terceira é delegar para uma ferramenta que não recalcula em uma célula de navegador. Se você consulta regularmente uma exportação CSV de 40.000 linhas ou uma conexão ao vivo com um banco de dados, a integração DuckDB do ModelMonkey resolve isso sem a sobrecarga de recálculo - você escreve SQL, os resultados aparecem na planilha, sem necessidade de mapeamento ColN.

Sintaxe ColN no QUERY vs. FILTER: Quando Usar Cada Um

Ambas as funções filtram linhas, mas respondem perguntas diferentes.

SituaçãoUse QUERYUse FILTER
Precisa selecionar colunas (SELECT)SimNão
Precisa de agregação (GROUP BY, SUM)SimNão
Filtro com múltiplas condiçõesQualquer umQualquer um
Saída em array dinâmico no Sheets modernoQualquer umSim (mais limpo)
Tratamento de linha de cabeçalhoNativo (3º argumento)Manual
Ordenação complexa (ORDER BY)SimNão
Cruzamento entre intervalos combinadosSimTrabalhoso

O FILTER é mais simples para seleção básica de linhas. O QUERY é a escolha certa assim que você precisa remodelar ou agregar - selecionar 3 de 8 colunas, pivotar categorias ou agrupar por mês.

Como a documentação de funções do Sheets do Google observa, o QUERY "executa uma consulta na Linguagem de Consulta da Visualization API do Google sobre os dados" - o que significa que é um mecanismo de consulta completo, não apenas uma camada de filtro.

Perguntas Frequentes

O que é Col1 no QUERY do Google Sheets?

Col1 representa a primeira coluna do intervalo que você passou para a função QUERY, não necessariamente a coluna A da planilha. Se o seu intervalo começa em C1, então Col1 é a coluna C, Col2 é D, e assim por diante. O número em ColN indica a posição relativa dentro do intervalo, contando da esquerda para a direita.

Por que meu QUERY retorna #VALUE! ao usar Col1?

O erro #VALUE! no QUERY costuma ter três causas principais: (1) você usou letras de coluna como A ou B em vez da notação Col1, Col2; (2) um literal de data não está no formato ISO 8601 (yyyy-MM-dd), por exemplo, escrevendo 01/04/2026 em vez de date '2026-04-01'; ou (3) o intervalo que você passou para o QUERY está vazio ou tem um tipo de dado inesperado na coluna referenciada. Verifique esses três pontos na ordem e você resolve 95% dos casos.

Qual a diferença entre Col1 e a letra de coluna A no QUERY do Google Sheets?

São sistemas de referência completamente diferentes. A letra A identifica uma coluna absoluta na planilha e não é uma sintaxe válida dentro de uma string de consulta QUERY. Col1 é uma referência relativa que aponta para a primeira coluna do intervalo informado à função - independentemente de qual coluna da planilha ela seja. Usar letras de coluna dentro da string de consulta gera um erro de parse imediatamente.

O que acontece com o mapeamento ColN quando eu combino dois intervalos no QUERY?

Quando você usa a notação de chaves para combinar intervalos - como {Plan1!A:C, Plan2!D:F} - o QUERY trata o resultado como uma tabela única e plana. A numeração ColN começa em Col1 na coluna mais à esquerda do conjunto combinado e avança sequencialmente. No exemplo acima, as colunas A, B, C de Plan1 viram Col1, Col2, Col3, e as colunas D, E, F de Plan2 viram Col4, Col5, Col6. Não há reinício da contagem ao cruzar de um intervalo para outro.