Programa
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 emref_text
. Se a1 forTRUE
ou omitido,ref_text
será interpretado como uma referência de estilo A1. Se a1 forFALSE
, 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. 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. 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. 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. 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. 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. Imagem do autor.
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. 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. 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. 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. 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. Imagem do autor.
O método alternativo moderno é usar a função SEQUENCE()
.
=SEQUENCE(5)
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 eSEQUENCE()
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 deINDIRECT()
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 |
|
Gerar sequências |
|
Lógica condicional ou fórmulas mais limpas |
|
Pesquisa de vários cenários |
|
Fórmulas de planilha flexíveis |
|
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.
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.