Procurar valores com INDEX/MATCH no Excel

ÍNDICE e CORRESP são funções incrivelmente polivalentes. Juntas permitem fazer lookups mais rápidos e com menos peso nos ficheiros.
Procurar valores com INDEX/MATCH no Excel
Funções INDEX/MATCH

Resumo

INDEX (Índice) e MATCH (Corresp) são funções incrivelmente polivalentes. Juntas permitem fazer lookups mais rápidos e com menos peso nos teus ficheiros. Se não usas, e ainda estás agarrado ao VLOOKUP (Procv), presta atenção a este artigo e no fim decide por ti se estás preparado para dar este passo em frente nos teus conhecimentos de Excel. Vamos começar por explicar cada uma das funções e depois partir para a sua aplicação em conjunto.

A Função ÍNDICE (Index)

O ÍNDICE (Index) permite-nos numa determinada tabela identificar um valor dando as coordenadas de Linha e Coluna.

Procurar um valor na 4ª linha
=(ÍNDICE(B3:B15;4))
No exemplo acima, dizemos ao Excel que na Coluna B, dentro das células B3:B15, procure o valor da 4ª linha. O valor devolvido é ID_4

Que valor corresponde ao parâmetro de busca
=(ÍNDICE(B3:F15;4;2))
E se quisermos saber o nome do/da Cliente que está na quarta linha?
Nesse caso, podemos dizer ao Excel que queremos que procure em toda a tabela B3:F15, a linha número 4 (que já tinhamos feito no primeiro exemplo) e a coluna 2. E a função devolve-nos então o nome Marlene, que é a cliente ID_4.

Posiciona com as coordenadas de linha e coluna

A Função CORRESP (Match)

A função CORRESP (Match) tem um ojectivo: encontrar a posição de um item numa tabela de dados.

Encontrar um item numa tabela
=CORRESP("josé";B3:B15;0)
Podemos usar CORRESP para encontrar a palavra "José" na tabela de dados B3:B15. A função devolve 8, já que este é o número da linha em que o nome que procuramos se encontra.

A função CORRESP não é Case-Sensitive. Podemos procurar por "José" ou "JOSÉ" que o Excel irá sempre encontrar o valor. E o Match funciona tanto na vertical como na horizontal.

Zero corresponde ao valor exato
=CORRESP("MARIA";H3:T3;0)
Procuramos por Maria e o valor devolvido é 5, que corresponde à 5ª coluna da tabela horizontal, onde efectivamente está o valor Maria. O último argumento da função é muito importante que seja correctamente definido. Estamos a usar 0, que corresponde a procurar o valor exacto.
Valor Resultado Detalhe
1 Aproximado CORRESP encontra o maior valor menor ou igual ao valor procurado. Tabela tem que estar ordenada por ordem crescente
0 Exato CORRESP encontra o primeiro valor igual ao valor procurado. Tabela não tem que estar ordenada
-1 Aproximado CORRESP encontra o menor valor maior ou igual ao valor procurado. Tabela tem que estar ordenada por ordem decrescente
Aproximado Se omitirmos o valor, o Excel assume 1 como default

A Função ÍNDICE (Index) com a Função CORRESP (Match)

Agora que já cobrimos o básico das Funções ÍNDICE e CORRESP, podemos olhar para o que conseguimos fazer quando as juntamos.

Usar índice e corresp

Imaginemos que queremos encontrar as vendas de Fevereiro do Vendedor João.
Já sabemos que usando o ÍNDICE podemos fazê-lo da seguinte forma:
=(ÍNDICE(B2:I14;9;6)) // Linha 9, Coluna 6 (G), devolve o valor 21
Mas o que queremos fazer é tornar esta pesquisa dinâmica.

1. Juntamos então finalmente o ÍNDICE com o CORRESP.
2. Definimos a tabela de procura com =ÍNDICE(B2:I14;
3. Procuramos por "João" na coluna B12:B14 com CORRESP("João";B2:B14;0)
4. E por fim ;6) indicamos que a procura deverá ocorrer na coluna 6.

Avançando um pouco mais, podemos continuar a procurar por "João" mas indicando desta feita a célula L2, onde João está escrito.

Procurar por um parâmetro
=ÍNDICE(B2:I14;CORRESP("João";B2:B14;0);6)
=ÍNDICE(B2:I14;CORRESP(L2;B2:B14;0);6) // em vez de "João" colocamos L2
Mas ainda podemos transformar mais a fórmula para automatizar ainda mais o processo.
Sabemos que o CORRESP funciona tanto na vertical como na horizontal.

Vamos procurar as vendas de Janeiro da Maria.

Procurar por vários parâmetros
=ÍNDICE(B2:I14;CORRESP(L5;B2:B14;0);CORRESP(L6;B1:I1;0))
1. Definimos novamente a tabela de procura com =ÍNDICE(B2:I14;
2. Procuramos por Maria na coluna B12:B14 com CORRESP(L5;B2:B14;0)
3. E procuramos por Janeiro na linha B1:I1 com CORRESP(L6;B1:I1;0))
4. E por último, introduzimos uma vantagem enorme face ao PROCV (Vlookup): procurar valores à esquerda.

Campo de procura não precisa estar à esquerda
=ÍNDICE(B2:I14;CORRESP(L9;I2:I14;0);CORRESP(L11;B1:I1;0))
1. A mesma tabela de procura com =ÍNDICE(B2:I14;
2. Mas desta vez vamos usar a última coluna que tem o ID dos Vendedores para demonstrar a busca à esquerda.
3. Procuramos pelo vendedor com o ID_2 com CORRESP(L9;I2:I14;0);
4. E procuramos por Março na linha B1:I1 com CORRESP(L11;B1:I1;0))

O PROCV (Vlookup) transformado em ÍNDICE/CORRESP (Index/Match)

Uma das utilizações mais comuns das Funções ÍNDICE/CORRESP (Index/Match) em conjunto é substituir a Função PROCV (Vlookup)

Usar em vez de procv
=ÍNDICE($B$2:$B$14;CORRESP($L2;$I$2:$I$14;0))
1. Começamos por dizer ao Excel que o resultado que procuramos está nesta coluna =ÍNDICE($B$2:$B$14.
2. E que o valor que serve de busca está nesta célula CORRESP($L2; e vamos procurá-lo na coluna $I$2:$I$14;.
3. Nunca esquecendo de referir que queremos o valor exacto 0)) antes de fechar parentesis.

Procuramos por ID_1 na coluna I e recebemos de volta o valor Vera da coluna B

Descargas

Descarrega aqui o ficheiro com os exemplos para procurar valores com INDEX e MATCH