Pular para o conteúdo principal

Excel INDIRECT(): Como criar referências dinâmicas em suas fórmulas

Descubra como a função INDIRECT() do Excel transforma texto em referências reais. Saiba como usá-lo para planilhas dinâmicas, referências estáveis a células, intervalos nomeados e muito mais.
Atualizado 10 de abr. de 2025  · 8 min lido

A função INDIRECT() é uma das ferramentas mais poderosas do Excel, mas muitas vezes mal compreendida. Diferentemente das funções que realizam cálculos diretamente, o site INDIRECT() converte cadeias de texto em referências de células ativas. Isso permite que os usuários criem fórmulas dinâmicas e flexíveis que se adaptam a entradas variáveis. Se você estiver criando um painel de resumo, referenciando diferentes planilhas com base nas seleções do usuário ou alterando dinamicamente as referências de células, o site INDIRECT() pode ser um divisor de águas.

Neste guia, mostrarei a você como usar a função INDIRECT() para fazer referência a células e solucionar problemas comuns, inclusive quando evitar o uso da função. Se você não estiver familiarizado com alguns conceitos básicos, recomendo que faça nosso curso Introdução ao Excel para criar uma base sólida. 

O que a função INDIRECT() faz

A função INDIRECT() do Excel recupera o valor de uma célula ou intervalo com base em uma referência fornecida como uma cadeia de texto. Em vez de codificar um endereço de célula como "A1" em uma fórmula, INDIRECT() permite que você defina dinamicamente esse endereço usando texto, que o Excel interpreta como uma referência ativa.

A sintaxe da função INDIRECT() é mostrada abaixo:

INDIRECT(ref_text, [a1])

Onde:

  • ref_text (obrigatório): Uma cadeia de texto que representa uma referência válida de célula ou intervalo. Isso pode se referir a uma célula como "A1", a um intervalo nomeado ou até mesmo a uma referência em outra planilha, como "Sheet2!B5".

  • [a1]: Esse é um argumento opcional que especifica o tipo de referência em ref_text. Se a1 for TRUE ou omitido, ref_text será interpretado como uma referência de estilo A1. Se a1 for FALSE, ref_text será tratado como uma referência no estilo R1C1.

Como usar a função INDIRECT()

O exemplo a seguir mostra como a função INDIRECT() converte dinamicamente o texto em referências de células.

Suponha que a célula C2 contenha o texto "A2" e a célula A2 contenha o valor 100. A função abaixo também retornará 100 porque o Excel lê o conteúdo de C2 e INDIRECT() o trata como uma referência.

=INDIRECT(C2)

Usando INDIRECT() para fazer referência com base em outra célula no Excel.

Usando INDIRECT() para fazer referência com base em outra célula no Excel. Imagem do autor.

Se a célula A5 contiver o número 5, você poderá criar uma referência dinâmica usando a fórmula abaixo:

=INDIRECT("B"&A5)

Essa fórmula combina "B" com o valor em A5 (6), formando "B6". INDIRECT() retorna o valor na célula B6, que é "Product A".

Usando INDIRECT() com & para referência dinâmica no Excel.

Usando INDIRECT() com & para referência dinâmica no Excel. Imagem do autor.

Usos dinâmicos de INDIRECT() no Excel

O verdadeiro ponto forte da função INDIRECT() é sua capacidade de criar referências dinâmicas. Isso o torna ideal para modelagem avançada, painéis de controle e relatórios orientados ao usuário. Abaixo estão três casos de uso importantes que demonstram sua flexibilidade.

Consulte outras planilhas

Você pode usar o site INDIRECT() para extrair dinamicamente dados de diferentes planilhas com base na entrada de uma célula. Por exemplo, se você tiver a célula A1 contendo o nome de uma planilha, como "Sales". Você deseja extrair o valor da célula B2 dessa planilha.

A fórmula abaixo constrói uma referência como 'Sales'!B2 e retorna o valor dessa célula.

=INDIRECT("'" & A1 & "'!B2")

Usando INDIRECT() para fazer referência indireta a outras planilhas no Excel.

Usando INDIRECT() para fazer referência indireta a outras planilhas no Excel. Imagem do autor.

Sempre coloque os nomes das planilhas entre aspas simples usando ' se houver alguma chance de conterem espaços ou caracteres especiais, como 'Sales 2023'!A1.

Faixas nomeadas de referência

Você também pode usar a função INDIRECT() para fazer referência a intervalos nomeados dinamicamente, o que é poderoso quando combinado com dropdowns ou entradas do usuário.

Suponha que você tenha intervalos nomeados, Sales_2023 e Sales_2023, em que a célula "A1" contém "Sales_2023"

Como nomear intervalos de células no Excel.

Como nomear intervalos de células no Excel. Imagem do autor.

A fórmula abaixo somará os valores no intervalo nomeado Sales_2023, embora não faça referência direta a ele. Esse método é excelente para painéis ou modelos orientados pelo usuário com vários cenários.

=SUM(INDIRECT(A1))

Usando INDIRECT() para fazer referência a intervalos nomeados no Excel.

Usando INDIRECT() para fazer referência a intervalos nomeados no Excel. Imagem do autor.

Referências corrigidas que não mudam

Normalmente, se você inserir ou excluir linhas ou colunas, as referências de células nas fórmulas se ajustam automaticamente. Mas a função INDIRECT() cria referências absolutas que não se deslocam.

Por exemplo, se você tiver a célula "A1" contendo 100, a fórmula =A1 e =INDIRECT("A1") retornarão 100. No entanto, se você deslocar o valor

Referência direta à célula no Excel.

Referência direta à célula no Excel. Imagem do autor.

Usando INDIRECT() para fazer referência a células no Excel.

Usando INDIRECT() para fazer referência a células no Excel. Imagem do autor.

No entanto, se você inserir uma nova linha acima da linha 1, D3 (era B2) agora mostra =A3, pois o valor muda com a linha. A célula E3 com a função INDIRECT() ainda mostra o A2 original, que agora pode estar vazio ou ter um valor diferente (UID).

Usando INDIRECT() para referências fixas no Excel.

Usando INDIRECT() para referências fixas no Excel. Imagem do autor.

Exemplos avançados e casos de uso

Quando você estiver familiarizado com os conceitos básicos, a função INDIRECT() se destacará em cenários mais avançados do Excel, especialmente quando combinada com funções como VLOOKUP(), ROW() e matrizes dinâmicas. Essas combinações permitem modelos ainda mais dinâmicos e flexíveis.

Use INDIRECT() com VLOOKUP()

Você pode combinar INDIRECT() com VLOOKUP() para alterar dinamicamente a tabela de pesquisa com base na entrada do usuário.

Suponha que você tenha duas tabelas, Prices_2022 e Prices_2023. Em células separadas, G1: Prices_2022 e G2: Apple`. A fórmula abaixo procura dinamicamente por "Apple" na tabela do ano selecionado com base no valor em A1 e retorna seu preço.

=VLOOKUP(G2, INDIRECT(G1), 2, FALSE)

Usando INDIRECT() com VLOOKUP() no Excel.

Usando INDIRECT() com VLOOKUP() no Excel. Imagem do autor.

Confira nosso VLOOKUP() de Another Sheet: Um tutorial de como fazer no Excel para que você saiba mais sobre como pesquisar e recuperar dados de diferentes planilhas do Excel.

INDIRECT() com referência a R1C1

INDIRECT() também pode usar a notação R1C1, que é especialmente útil quando você constrói fórmulas dinamicamente em macros ou faz referência a posições programaticamente.

Por exemplo, a fórmula abaixo retorna o valor na linha 2, coluna 3 (célula C2). O segundo argumento (FALSE) informa ao Excel que você usará o estilo R1C1, não o A1.

=INDIRECT("R2C3", FALSE)

Usando INDIRECT() com R1C1 no Excel.

Usando INDIRECT() com R1C1 no Excel. Imagem do autor.

A fórmula a seguir inclui o uso dinâmico de ROW() e COLUMN(). A fórmula sempre retornará o valor da coluna 3 na mesma linha em que a fórmula foi escrita.

=INDIRECT("R" & ROW() & "C3", FALSE)

Usando INDIRECT() com ROW() e COLUMN() no Excel.

Usando INDIRECT() com ROW() e COLUMN() no Excel. Imagem do autor.

INDIRECT() e matrizes dinâmicas

Antes de o Excel introduzir as matrizes dinâmicas, o site INDIRECT() era um método comum para gerar um comportamento semelhante ao de uma matriz.

Por exemplo, a fórmula abaixo retorna uma matriz: {1; 2; 3; 4; 5}. Isso simula uma matriz de 1 a 5, referenciando as linhas indiretamente.

=ROW(INDIRECT("1:5"))

Usando INDIRECT() com ROW() para matrizes dinâmicas no Excel.

Usando INDIRECT() com ROW() para matrizes dinâmicas no Excel. Imagem do autor.

O método alternativo moderno é usar a função SEQUENCE().

=SEQUENCE(5)

Usando SEQUENCE() para matrizes dinâmicas no Excel.

Usando SEQUENCE() para matrizes dinâmicas no Excel. Imagem do autor.

O uso de INDIRECT() para matrizes dinâmicas ainda funciona, mas é considerado menos eficiente e menos legível do que SEQUENCE(), FILTER() e outras funções de matriz dinâmica disponíveis no Excel moderno (Office 365 e Excel 2021+).

Cuidados e preocupações com o desempenho

A função INDIRECT() tem algumas limitações importantes, especialmente quando usada em pastas de trabalho grandes ou complexas do Excel. Esses problemas incluem o seguinte:

  • Função volátil (sobrecarga de recálculo): INDIRECT() é uma função volátil, o que significa que ela recalcula sempre que qualquer alteração é feita em qualquer lugar da pasta de trabalho, mesmo que a alteração não tenha nada a ver com a fórmula. Isso pode causar um desempenho mais lento.

  • A depuração pode ser um desafio: Como o INDIRECT() constrói referências a partir do texto, o Excel não pode rastreá-las facilmente como faz com as referências de células padrão. Isso dificulta a auditoria de fórmulas com precedentes/dependentes de rastreamento ou a detecção de referências quebradas quando algo muda.

  • Considere alternativas modernas: Quando possível, geralmente é melhor usar funções não voláteis que oferecem melhor desempenho e clareza. Esses métodos incluem INDEX() para pesquisas dinâmicas de células, CHOOSE() para selecionar dinamicamente intervalos ou opções predefinidos e SEQUENCE() para gerar matrizes numéricas dinâmicas.

Quando você deve evitar o uso de INDIRECT()

Embora o site INDIRECT() ofereça grande flexibilidade, nem sempre é a melhor opção. Muitas vezes, isso introduz complexidade desnecessária, problemas de desempenho ou de manutenção. Abaixo estão algumas situações que você deve evitar e os melhores métodos alternativos.

  • Referências dinâmicas de células na mesma planilha: Use INDEX() em vez de INDIRECT() para obter melhor desempenho e rastreabilidade.

  • Matrizes dinâmicas ou sequências de números: Evite =ROW(INDIRECT("1:10")). Em vez disso, use =SEQUENCE(10), que é mais rápido, mais limpo e não volátil.

  • Quando a rastreabilidade é importante: As fórmulas que usam INDIRECT() não podem ser rastreadas com "Trace Precedents" ou "Evaluate Formula" de forma eficaz.

  • Referência a uma célula ou intervalo estático: Não use INDIRECT("A1") se você pode simplesmente escrever =A1.

  • Uso intenso em planilhas grandes: Como o site INDIRECT() é volátil, ele é recalculado constantemente e pode reduzir significativamente a velocidade do desempenho.

INDIRECT() alternativas

A tabela a seguir resume as melhores alternativas para INDIRECT().

Meta

Prefira isso em vez de INDIRECT()

Referência dinâmica a células

INDEX()

Gerar sequências

SEQUENCE()

Lógica condicional ou fórmulas mais limpas

LET()

Pesquisa de vários cenários

CHOOSE() ou XLOOKUP()

Fórmulas de planilha flexíveis

XLOOKUP() com dados estruturados ou Power Query

Principais conclusões

INDIRECT() transforma cadeias de texto em referências ativas, o que o torna uma ferramenta poderosa para a criação de planilhas dinâmicas e flexíveis. É útil para fazer referência a diferentes planilhas, intervalos nomeados ou células fixas que não devem mudar com as alterações. No entanto, é uma função volátil que recalcula com frequência e pode tornar lentas pastas de trabalho grandes. A função também é mais difícil de rastrear e depurar do que as funções tradicionais. Use o site INDIRECT() de forma seletiva e considere alternativas mais seguras e eficientes.

Recomendo que você faça nosso curso Análise de dados no Excel para aprender sobre insights em dados B2B e o programa de habilidades Fundamentos do Excel para saber mais sobre as funções disponíveis nas versões mais recentes do Excel. Nosso curso Advanced Excel Functions é perfeito se você estiver explorando referências e pesquisas avançadas.

Avance em sua carreira com o Excel

Adquira as habilidades para maximizar o Excel - não é necessário ter experiência.

Comece hoje gratuitamente

Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Eu crio artigos que simplificam a ciência e a análise de dados, tornando-as fáceis de entender e acessíveis.

Perguntas frequentes sobre o Excel

O que INDIRECT() faz?

INDIRECT() converte uma string de texto em uma referência de célula ou intervalo.

O INDIRECT() é atualizado automaticamente?

Sim, o site INDIRECT() recalcula quando as células referenciadas são alteradas, a menos que a referência seja inválida.

Como INDIRECT() afeta o desempenho?

INDIRECT() recalcula toda vez que uma célula da pasta de trabalho é alterada, o que pode tornar as pastas de trabalho grandes ou complexas mais lentas devido aos recálculos frequentes.

Quais são as alternativas para INDIRECT()?

Use INDEX(), CHOOSE(), SEQUENCE(), ou LET() para obter um desempenho mais seguro e rápido.

Por que INDIRECT() retorna #REF!?

A referência que você está tentando acessar não existe ou está mal escrita.

Tópicos

Aprenda Excel com a DataCamp

Programa

Excel Fundamentals

0 min
Gain the essential skills you need to use Excel, from preparing data to writing formulas and creating visualizations. No prior experience is required.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

Tutorial

Como fazer um VLOOKUP() com vários critérios

Domine a arte de usar VLOOKUP() com vários critérios no Excel. Explore técnicas avançadas, como colunas auxiliares e a função CHOOSE().
Laiba Siddiqui's photo

Laiba Siddiqui

10 min

Tutorial

As 15 fórmulas básicas do Excel que todos precisam saber

Aprenda a adicionar fórmulas aritméticas, de cadeia de caracteres, de séries temporais e complexas no Microsoft Excel.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Tutorial

Tutorial do Excel Regex: Dominando a correspondência de padrões com expressões regulares

Descubra o poder das Expressões Regulares (RegEx) para correspondência de padrões no Excel. Nosso guia abrangente revela como padronizar dados, extrair palavras-chave e realizar manipulações avançadas de texto.
Chloe Lubin's photo

Chloe Lubin

12 min

Tutorial

XLOOKUP() vs. VLOOKUP(): Uma comparação para usuários do Excel

XLOOKUP() pesquisa em qualquer direção, tem como padrão as correspondências exatas e possui tratamento de erros incorporado, enquanto VLOOKUP() pesquisa somente à direita e precisa de indexação manual de colunas.
Laiba Siddiqui's photo

Laiba Siddiqui

11 min

Tutorial

Tutorial do Power BI Calculate

Aprenda a usar a função CALCULATE do Power BI e dê exemplos de como você pode usá-la.
Joleen Bothma's photo

Joleen Bothma

6 min

Tutorial

Como calcular o desvio padrão no Excel

Para calcular o desvio padrão no Excel, insira seus dados em um intervalo de células e use =STDEV.S() para dados de amostra ou =STDEV.P() para dados de população.
Arunn Thevapalan's photo

Arunn Thevapalan

10 min

Ver maisVer mais