Menu fechado

Comparando as funções de correspondência do Excel

Para quando buscamos informações adicionais de uma tabela no Excel, podemos contar com as funções de correspondência. Tem à nossa disposição algumas opções, o PROCV (veja o artigo sobre essa função), a dupla ÍNDICE & CORRESP (outro artigo) e o PROCX (mais um). Mas você sabe quando devemos utilizar ou evitar cada uma delas? Este é assunto deste post.

Vamos partir de um caso base, onde temos uma tabela com cidades e UFs (Tabela 1), uma célula onde selecionamos uma das cidades (F4, destacada em vermelho) e queremos retornar a UF correspondente (intervalo F7:H7, destacado em amarelo):

Nas células F7, G7 e H7, foram utilizadas as funções ÍNDICE & CORRESP, PROCX e PROCV, respectivamente, para retornar a UF da cidade selecionada:

=ÍNDICE(C5:C21;CORRESP(F4;B5:B21;0))
=PROCX(F4;B5:B21;C5:C21)
=PROCV(F4;B5:C21;2;0)

Esta é uma situação padrão onde as três opções de funções operam perfeitamente, mas vejamos algumas situações em que seus comportamentos difeririam.

Adição ou remoção de colunas

Suponha que adicionássemos uma nova coluna no meio da tabela, entre as informações de Cidade e UF:

Fazendo isso, o PROCV deixa de funcionar, pois, na fórmula, a função não é atualizada automaticamente e continua retornando a segunda coluna do intervalo informado (B5:C21), que agora está em branco:

No caso do ÍNDICE & CORRESP e do PROCX, o resultado não é afetado, pois as colunas de busca e retorno são referenciadas diretamente.

Para que o PROCV voltasse a funcionar, seria necessário substituir a posição da coluna de resultado (de 2 para 3):

=PROCV(G4;B5:D21;3;0)

Fórmula ajustada:

Ordem das colunas

Veja a planilha abaixo:

Ela está praticamente igual ao primeiro caso, a única alteração foi a ordem das colunas. Agora, a Cidade está à direita da coluna de UFs. Por este motivo, o PROCV não funciona mais, pois ele exige que a coluna de busca (no nosso caso, a coluna com cidades) seja a primeira da tabela. Por conseguinte, seria necessário inverter a ordem as colunas para fazer uso da função.

No caso das funções ÍNDICE & CORRESP e PROCX, não haveria problemas, uma vez que elas tratam os vetores de busca e retorno separadamente:

=ÍNDICE(B5:B21;CORRESP(F4;C5:C21;0))
=PROCX(F4;C5:C21;B5:B21)

Resultado:

Vetores horizontais

Suponha, agora, uma tabela horizontal com o faturamento mês a mês de uma empresa. Logo abaixo, na célula C5, podemos selecionar um dos meses e queremos retornar o valor correspondente de faturamento na linha 8.

As funções ÍNDICE & CORRESP e PROCX conseguem trabalhar com vetores horizontais:

=ÍNDICE(C3:N3;CORRESP(C5;C2:N2;0))
=PROCX(C5;C2:N2;C3:N3)

Por outro lado, a função PROCV deve ser substituída pelo PROCH (veja que esse H no nome da função se refere a horizontal e o V do PROCV a vertical).

=PROCH(C5;C2:N3;2;0)

E, com isso, teríamos o seguindo resultado:

Resultado alternativo

De vez em quando, pode acontecer de buscarmos um valor que não está presente na lista e, quando isso acontece, as funções retornam o erro #N/D (não disponível). Por exemplo, se digitarmos o nome de uma cidade que não está na lista:

Geralmente, para contornar este tipo de erro, é possível utilizar a função SEERRO que retornará o resultado das funções de correspondência no caso de valores encontrados com sucesso, mas que pode retornar um resultado alternativo caso o valor não seja encontrado na lista:

=SEERRO(ÍNDICE(C5:C21;CORRESP(F4;B5:B21;0));"Erro")
=SEERRO(ÍNDICE(C5:C21;CORRESP(F4;B5:B21;0));"Erro")
=SEERRO(PROCV(F4;B5:C21;2;0);"Erro")

Agora o texto “Erro” seria exibido ao procurar por uma cidade ausente na lista:

Até aqui tudo certo, mas o PROCX permite informar este resultado alternativo em sua própria sintaxe. Ou seja, não é necessário utilizar a função SEERRO, podemos digitá-lo assim:

=PROCX(F4;B5:B21;C5:C21;"Erro")

E o resultado continua o mesmo:

Por isso, nesse sentido, o PROCX pode ser bastante prático.

Busca em matrizes

Por fim, podemos querer buscar informações em tabelas mais complexas, com cabeçalhos em linhas e em colunas. Por exemplo, suponha uma tabela onde temos a receita líquida por loja e por mês:

Podemos querer encontrar a receita de uma certa loja em um determinado mês.

As funções PROCV e PROCX trabalham apenas com vetores (unidimensionais), não podendo ser utilizadas neste caso.

Por outro lado, a combinação das funções ÍNDICE e CORRESP permitem retornar um elemento em uma matriz bidimensional (com o ÍNDICE) após procurar pela linha e pela coluna desejada (com 2 CORRESPs). Neste caso, faríamos o seguinte:

=ÍNDICE(C5:H9;CORRESP(C11;B5:B9;0);CORRESP(C12;C4:H4;0))

E, desta forma, seria possível buscar o valor desejado:

Conclusão

O objetivo desta postagem foi indicar algumas situações onde devemos tomar cuidado na escolha da função de correspondência. Mas podemos resumir alguns pontos fortes de cada uma delas:

  • PROCV: é a opção mais comum, sendo bastante conhecida por usuários de Excel e até de outros editores de planilha. Apresenta uma sintaxe simples, cujo uso pode ser compreendido por diversas pessoas;
  • ÍNDICE & CORRESP: possui a sintaxe mais elaborada, mas é a única solução para lidar com matrizes bidimensionais. Também é bastante resiliente, por lidar com os vetores de busca e retorno individualmente;
  • PROCX: é a função mais recente de todas, com um funcionamento semelhante ao ÍNDICE & CORRESP de uma dimensão. Seus argumentos adicionais, como o resultado alternativo, podem ser extremamente práticos e vantajosos.

Então é isso, cada uma das opções abordadas aqui possui suas características, mas funciona extremamente bem se utilizada de forma apropriada.

Para fazer o download do arquivo desta postagem, utilize o link abaixo:

Até a próxima, abraços!