Menu

INDIRETO no Excel (INDIRECT): texto como referência

=INDIRETO("C"&E2) lê a célula cujo endereço é montado como texto: coluna C, linha E2. Use para escolher uma planilha pelo nome escrito em uma célula, montar intervalos a partir de números e fazer listas suspensas dependentes.

Todas as planilhas desta página são ao vivo: mude um número ou uma fórmula e elas recalculam.

=INDIRETO(E2) lê a célula cujo endereço está escrito como texto em E2. Se E2 diz C4, a fórmula retorna o valor de C4. O endereço também pode ser montado em partes: =INDIRETO("C"&E3) lê a coluna C no número de linha que está em E3. A INDIRETO se chama INDIRECT em inglês, e a tabela mostra a fórmula assim: =INDIRECT("C"&E3). Você também pode digitar as fórmulas em português, com ponto e vírgula.

Uma referência escrita como texto
F2
ABCDEF
1ProductCategoryPriceAddressValue
2AppleFruit$1.20C4$0.80
3PearFruit$1.506$1.10
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
Clique em uma célula para ver a fórmula. Mude um número ou uma fórmula e a planilha recalcula.No Excel em português: =INDIRETO(E2)

F2 lê C4, o preço de Carrot, $0.80. Mude E2 para C3 ou B5 e F2 acompanha. F3 junta "C" e o 6 de E3 no endereço C6 e retorna $1.10. Mude E3 para 2 para ver o preço de Apple.

Sintaxe da INDIRETO

=INDIRECT(ref_text, [a1])
  • ref_text: um texto que escreve uma referência: "C4", "B2:B6", "Prices!A2", "'Price list'!A2:B9".
  • a1: VERDADEIRO ou de fora para endereços no estilo A1. FALSO lê o estilo L1C1, em que "L4C3" significa linha 4, coluna 3, o que combina com uma linha e uma coluna que são, as duas, números. No Excel em inglês, esse estilo se chama R1C1 ("R4C3").

Se o texto não é um endereço válido, o resultado é #REF!. A INDIRETO retorna uma referência de verdade, então funciona dentro de SOMA, CONT.SE, PROCV e qualquer função que receba um intervalo.

Montar um intervalo a partir de números

O endereço pode ser um intervalo inteiro. Juntar um número a ele dá um intervalo cujo tamanho vem de uma célula.

Total das primeiras N linhas
F2
ABCDEF
1MonthSalesRowsTotal
2Jan4,200312,900
3Feb3,900
4Mar4,800
5Apr5,100
6May4,600
7Jun5,300
Clique em uma célula para ver a fórmula. Mude um número ou uma fórmula e a planilha recalcula.No Excel em português: =SOMA(INDIRETO("B2:B"&(1+E2)))

Com 3 em E2, o texto vira B2:B4, e F2 soma de Jan a Mar: 12,900. Coloque 6 em E2 para o semestre, 27,900. O 1+E2 está ali porque os dados começam na linha 2. O mesmo total pode ser escrito sem a INDIRETO, =SOMA(B2:ÍNDICE(B2:B7;E2)), que não é volátil; a página do DESLOC compara as opções.

Referência a uma planilha cujo nome está em uma célula

O nome da planilha também pode vir de uma célula. Isso transforma uma fórmula de resumo em uma busca entre planilhas: cada linha lê a planilha cujo nome está na coluna A. As aspas simples em volta do nome fazem a fórmula funcionar com nomes que têm espaços.

Um total por planilha de mês
B2
AB
1MonthTotal
2Jan12,500
3Feb12,200
4Mar13,700
Clique em uma célula para ver a fórmula. Mude um número ou uma fórmula e a planilha recalcula.No Excel em português: =SOMA(INDIRETO("'"&A2&"'!B2:B4"))

B2 monta o texto 'Jan'!B2:B4 e totaliza: 12,500. B3 e B4 são a mesma fórmula arrastada para baixo, então leem Feb (12,200) e Mar (13,700). Abra a aba Feb e mude um número: o resumo acompanha. Digite Feb no lugar de Jan em A2 e B2 passa a totalizar Feb. O B2:B4 dentro das aspas é texto, então não muda quando a fórmula é arrastada; só a referência a A2 muda.

Listas suspensas dependentes

Uma segunda lista suspensa cujos itens dependem da primeira é o trabalho clássico da INDIRETO. No Excel, a montagem comum é:

  1. Coloque os itens de cada categoria em uma coluna e dê a cada intervalo o nome da sua categoria: selecione as colunas com os cabeçalhos e use Fórmulas > Criar a partir da Seleção > Linha superior. Isso cria os nomes Fruit, Vegetable e Dairy.
  2. Dê a A2 uma lista das categorias: Dados > Validação de Dados > Permitir: Lista, Fonte Fruit,Vegetable,Dairy (no Excel em português, com ponto e vírgula: Fruit;Vegetable;Dairy).
  3. Dê a B2 uma lista com a Fonte =INDIRETO(A2). Quando A2 diz Fruit, a lista lê o intervalo chamado Fruit.

A tabela abaixo monta a mesma coisa com uma planilha por categoria em vez de um intervalo nomeado. D2 usa a INDIRETO para espalhar os itens da planilha cujo nome está em A2, e a lista de B2 lê D2:D4.

Uma lista de itens que depende da categoria
D2
ABCD
1CategoryItemItems for the category
2FruitAppleApple
3Pear
4Plum
Clique em uma célula para ver a fórmula. Mude um número ou uma fórmula e a planilha recalcula.No Excel em português: =INDIRETO("'"&A2&"'!A2:A4")

Escolha Dairy em A2: D2:D4 passa para Milk, Butter, Cheese, e as opções de B2 também. B2 mantém o valor antigo até você escolher um novo; o Excel se comporta do mesmo jeito, e por isso formulários costumam ter uma verificação como =CONT.SE(D2:D4;B2)>0 ao lado do item. No Excel 365, você pode dispensar os intervalos nomeados e apontar a segunda lista para uma fórmula espalhada, por exemplo =INDIRETO("'"&A2&"'!A2:A4") em uma célula auxiliar e =D2# como Fonte. A página da lista suspensa tem o resto da montagem.

A INDIRETO é volátil e ignora linhas inseridas

Dois efeitos colaterais vêm de a INDIRETO ler texto em vez de uma referência:

  • Ela recalcula a cada mudança. O Excel não tem como saber para quais células um texto vai apontar, então recalcula toda INDIRETO depois de qualquer edição em qualquer lugar da pasta de trabalho. Algumas dezenas não fazem mal; dezenas de milhares deixam cada tecla lenta. O ÍNDICE com um número de linha (=ÍNDICE(C:C;E3)) dá o mesmo resultado que =INDIRETO("C"&E3) e só recalcula quando as entradas dele mudam.
  • O endereço não se move. Insira uma linha acima da linha 4 e =C4 vira =C5, mas =INDIRETO("C4") continua lendo C4, que agora é outra linha. Às vezes é exatamente isso que se quer, uma referência que precisa ficar numa célula fixa aconteça o que acontecer com a planilha. Na maioria das vezes, é um bug esperando alguém inserir uma linha.

A INDIRETO para outra pasta de trabalho só funciona enquanto essa pasta está aberta; fechada, ela retorna #REF!.

Prática: um preço a partir do número da linha

Lista de preços
F2
ABCDEF
1ProductCategoryPriceRowPrice
2AppleFruit$1.205
3PearFruit$1.50
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
Clique em uma célula para ver a fórmula. Mude um número ou uma fórmula e a planilha recalcula.

Sua vez: Em F2, use a INDIRETO para retornar o preço da coluna C na linha cujo número está escrito em E2.

Perguntas frequentes

O que a INDIRETO faz no Excel?

Ela transforma texto em uma referência. =INDIRETO("C4") retorna o valor de C4, e =INDIRETO(E2) retorna o valor da célula cujo endereço está escrito em E2. O endereço pode ser montado com &, então =INDIRETO("C"&E2) lê a coluna C no número de linha que está em E2.

Como me refiro a outra planilha cujo nome está em uma célula?

Monte o endereço com o nome da planilha entre aspas simples: =INDIRETO("'"&A2&"'!B2"). As aspas fazem a fórmula funcionar com nomes que têm espaços. =SOMA(INDIRETO("'"&A2&"'!B2:B4")) totaliza um intervalo dessa planilha.

Por que a INDIRETO retorna #REF!?

O texto não é um endereço válido, ou cita uma planilha que não existe, ou aponta para outra pasta de trabalho que está fechada. Confira o texto que a fórmula monta colocando a mesma expressão sozinha em uma célula, sem a INDIRETO.

A INDIRETO é volátil?

É. O Excel recalcula toda INDIRETO a cada mudança em qualquer lugar da pasta de trabalho, porque não sabe de antemão para quais células o texto vai apontar. Algumas não fazem mal; milhares deixam a pasta lenta. O ÍNDICE muitas vezes faz o mesmo trabalho sem ser volátil.

Ilustração das linguagens de programação do Coddy

Aprenda a programar com o Coddy

COMEÇAR