Quem trabalha com referências dinâmicas no Excel eventualmente encontra duas funções com propósitos parecidos: DESLOC e INDIRETO. As duas criam referências que não são fixas como C5 ou B2:B100, mas calculadas dinamicamente baseadas em outros valores da planilha. As duas são funções voláteis que recalculam a cada alteração na planilha. Mas as semelhanças param por aí — cada uma funciona de forma completamente diferente e tem casos de uso específicos onde é claramente superior à outra. Neste artigo iremos mostrar as diferenças entre DESLOC e INDIRETO no Excel, quando usar cada uma e qual é mais adequada para cada tipo de problema.
Como o INDIRETO funciona e onde ele brilha
A função INDIRETO (INDIRECT em inglês) recebe como argumento um texto — uma string — que representa o endereço de uma célula ou intervalo, e retorna o conteúdo daquele endereço. Por exemplo: =INDIRETO(“B5”) retorna o valor da célula B5. =INDIRETO(“B”&A1) retorna o valor da célula na coluna B na linha cujo número está em A1. A função interpreta o texto como um endereço de célula e vai buscar o valor naquele endereço.
O INDIRETO brilha em situações onde o endereço da célula é construído como texto a partir de partes variáveis — especialmente quando envolve nomes de abas de planilha. Para referenciar dinamicamente a célula B5 de uma aba cujo nome está em A1: =INDIRETO(“‘”&A1&”‘!B5”). Aqui, A1 pode conter “Janeiro”, “Fevereiro”, “Norte”, “Sul” — qualquer nome de aba — e o INDIRETO busca a célula B5 naquela aba específica. Essa capacidade de mudar a aba referenciada com base no valor de uma célula é exclusiva do INDIRETO — o DESLOC não consegue fazer esse tipo de navegação entre abas de forma dinâmica.
Outro uso clássico do INDIRETO é a referência dinâmica a intervalos nomeados. Se você tem vários intervalos nomeados como “VendasNorte”, “VendasSul”, “VendasLeste” e quer somá-los conforme a seleção do usuário: =SOMA(INDIRETO(“Vendas”&A1)), onde A1 contém “Norte”, “Sul” ou “Leste”. O INDIRETO constrói o nome “VendasNorte” como texto e o interpreta como o nome do intervalo, retornando a referência correspondente para a SOMA. Esse padrão de construção de nome dinâmico com concatenação de texto é muito útil em dashboards onde a escolha do usuário em uma lista suspensa determina qual região ou categoria está sendo analisada.
DESLOC versus INDIRETO: diferenças fundamentais na lógica de funcionamento
A diferença fundamental entre DESLOC e INDIRETO está na forma como cada um constrói a referência dinâmica. O DESLOC trabalha com coordenadas numéricas — você parte de uma célula de origem e define o deslocamento em número de linhas e colunas. É uma abordagem geométrica: você navega pela grade de células por movimento. O INDIRETO trabalha com texto — você constrói o endereço da célula como uma string e o converte em referência. É uma abordagem textual: você constrói o endereço como palavras e o Excel o interpreta.
Essa diferença de abordagem determina onde cada função é mais adequada. O DESLOC é mais natural quando o deslocamento é calculado numericamente — “3 linhas abaixo do cabeçalho”, “na coluna correspondente ao mês selecionado”, “no último registro da lista”. Nesses casos, o deslocamento é um número que outra função calcula (como CORRESP para encontrar a posição de um valor, ou CONT.VALORES para contar registros), e o DESLOC usa esse número diretamente. O INDIRETO é mais natural quando o endereço é construído por concatenação de texto — “a célula na linha 5 da aba cujo nome está em A1”, “o intervalo nomeado que começa com ‘Vendas’ e termina com o valor de B1”.
Uma diferença prática importante: o DESLOC pode retornar um intervalo de múltiplas células (usando os argumentos de altura e largura), enquanto o INDIRETO também pode retornar intervalos mas apenas quando o texto fornecido representa um endereço de intervalo como “B2:B100” ou um nome de intervalo. O DESLOC tem a vantagem de calcular o tamanho do intervalo dinamicamente (altura = CONT.VALORES(…)), o que é muito mais difícil de replicar com INDIRETO.
Quando usar DESLOC e quando usar INDIRETO
Use DESLOC quando o problema é de navegação numérica pela grade de células: calcular médias móveis, criar intervalos que crescem com os dados, navegar por uma posição calculada numericamente em uma tabela. O DESLOC é a ferramenta natural quando você tem uma posição de origem e quer se mover um número específico de linhas e colunas a partir dela — especialmente quando esse número é calculado por outra função como CORRESP, CONT.VALORES ou LINHA.
Use INDIRETO quando o problema é de construção de endereço por concatenação de texto: referenciar abas diferentes baseado em uma seleção do usuário, usar intervalos nomeados dinamicamente, construir referências que combinam partes fixas e partes variáveis de texto. O INDIRETO é a ferramenta natural quando você sabe o endereço ou o nome do que quer referenciar, mas esse endereço ou nome muda dependendo de um valor na planilha.
Em termos de performance, ambas são voláteis e têm impacto parecido em planilhas com muitos cálculos. No entanto, uma diferença prática é que o INDIRETO com referências a outras abas pode forçar o Excel a manter essas abas abertas na memória, o que pode causar lentidão em arquivos com muitas abas referenciadas indiretamente. O DESLOC trabalha sempre dentro da mesma estrutura de planilha e não tem esse problema específico. Em planilhas com centenas de fórmulas INDIRETO referenciando outras abas, pode ser vantajoso repensar a estrutura para reduzir a dependência dessa função.
Combinando DESLOC e INDIRETO para referências duplamente dinâmicas
Em análises avançadas, às vezes você precisa de referências que são dinâmicas em duas dimensões ao mesmo tempo: tanto o endereço da aba quanto a posição dentro da aba dependem de seleções do usuário. Nesse caso, as duas funções trabalham juntas: o INDIRETO navega até a aba correta e o DESLOC navega até a posição correta dentro dessa aba.
Por exemplo, para encontrar o valor na posição N de uma aba cujo nome está em A1: =INDIRETO(“‘”&A1&”‘!A1”). Isso ainda é só INDIRETO. Mas para buscar o valor na linha N da aba cujo nome está em A1, onde N está em B1: =INDIRETO(“‘”&A1&”‘!A”&B1). Aqui, o endereço é construído com o nome da aba e a linha como texto concatenado. Para uma versão com DESLOC dentro da referência: como o INDIRETO não aceita diretamente uma fórmula DESLOC como argumento, a solução é usar INDIRETO para obter a referência de partida e DESLOC para navegar a partir dela: =DESLOC(INDIRETO(“‘”&A1&”‘!A1”); B1-1; 0). Essa combinação permite navegar para a linha B1 de qualquer aba selecionada — uma referência duplamente dinâmica que seria muito difícil de construir com qualquer outra abordagem.
Se você curtiu esse artigo onde mostramos as diferenças entre DESLOC e INDIRETO no Excel e quando usar cada um, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.