titulo.jpg

Home

Principal

Assinar

 

Dicas

Excel

Word

Outlook

Office/VBA

Suplementos

Vídeos

Outros

Busque neste site:

Loading
 

PROCV

Última atualização: 06/12/2011

Introdução

Automatizando o n.º_índice_coluna

O Parâmetro procura_intervalo

PROCV em Referências Externas

   -PROCV em Outra Planilha

   -PROCV em Outra Pasta de Trabalho

Retornar Todas as Correspondências de um PROCV

PROCV com Critérios

  -Explicação 

Procurar Valores à Esquerda de uma Tabela

   -Fazer Cópia de Coluna para o Início da matriz_tabela

   -Utilizando Funções CORRESP, DESLOC e ÍNDICE

     -Explicação

-Rearranjar matriz_tabela Dentro do PROCV

Referências

 

Introdução

A fórmula PROCV é uma das funções mais usadas no Excel. Tal fato se justifica pela grande utilidade da mesma: retorna a correspondência da coluna vizinha de um elemento em uma tabela. Exemplo: na tabela abaixo, deseja-se preencher a tabela azul (que contém muitas linhas) com os Pontos de cada Nome, de acordo com a tabela de referência, na cor verde:

Considerando que a tabela azul tem mais de mil linhas, seria gasto um tempo muito grande para realizar a tarefa povoando-a manualmente. A fórmula PROCV procura um valor ou referência numa tabela e retorna a correspondência na célula. Nesse exemplo, poderíamos escrever em G5:

=PROCV(F5;B3:D7;2;0)

e pressionar ENTER:

A fórmula retornou 563, corretamente. Observe que ela possui 4 parâmetros:

=PROCV(valor_procura;matriz_tabela;n.º_índice_coluna;procura_intervalo)

valor_procura pode ser um valor ou uma referência (ou seja, uma outra célula do Excel que tenha um valor) ;

matriz_tabela é a tabela onde o valor_procura será pesquisado, verticalmente no primeiro intervalo. Essa tabela pode ter mais de uma coluna, e por isso é importante ressaltar que a coluna pesquisada sempre será a primeira coluna da tabela. Exemplo: no caso acima, matriz_tabela é B3:D7, o valor_procura será pesquisado no intervalo B3:B7 (ou seja, somente na coluna B) ;

n.º_índice_coluna é qual coluna o PROCV retornará à célula. Esse valor é um número inteiro igual ou maior que 1. No exemplo acima, foi necessário atribuir 2 a esse parâmetro para retornar quantos Pontos um Nome tem porque Pontos é a coluna logo à direita, ou seja, é a coluna 2 tendo-se como como 1 a coluna de referência. É importante lembrar que a matriz_tabela deve ser larga o suficiente para acomodar o n.º_índice_coluna a ser usado na fórmula, ou seja, se você deseja usar 5 para o n.º_índice_coluna, a matriz_tabela deve ser no mínimo, por exemplo, A1:E1000, ou D8:Y500. Se o n.º_índice_coluna ultrapassar a largura da matriz_tabela, o erro #REF! será retornado à célula.

procura_intervalo pode ser VERDADEIRO/FALSO ou 0/1, e é opcional. Por enquanto, mantenha-o como 0 ou FALSO (tem o mesmo efeito, pessoalmente uso o 0 por praticidade) porque adiante será explicado como esse parâmetro pode ser usado.

É importante lembrar que o PROCV não distingue maiúsculas de minúsculas, isto é, se na matriz_tabela conter o registro Felipe e o valor_procura for felipe, a fórmula tratará esse caso normalmente e retornará sua correspondência.

Para o nosso exemplo, como preencher a célula H5, para retornar a Cidade de um Nome específico? Será a mesma fórmula para retornar os Pontos, somente alterando o parâmetro n.º_índice_coluna da fórmula de 2 para 3, já que se considerarmos a coluna Nome como 1, Pontos será a 2 e então Cidade será a 3:

=PROCV(F5;B3:D7;3;0)

O resultado será, corretamente Búzios.

A próxima etapa é copiar a fórmula para todas as células da tabela a ser preenchida. Para fazer isso, precisamos fixar a referência da tabela a ser pesquisada (matriz_tabela), senão a tabela de procura irá deslocar quando se colar fórmula abaixo.:

Em G5: =PROCV($F5;$B$3:$D$7;2;0)

Em H5: =PROCV($F5;$B$3:$D$7;3;0)

Nota: Clique aqui para aprender mais sobre referências relativas e absolutas.

Pronto, agora é só copiar essa fórmula para as todas as outras células das colunas, ou seja, copiar-se-á a célula G5 para todas as células da coluna G e H5 para todas as células da coluna H.

 

Suprimindo Erros no PROCV

Caso um valor procurado não seja encontrado na tabela de busca, o Excel retorna #N/D para a célula:

Veja que o PROCV consegue retornar com sucesso as correspondências de Ricardo e ricardo, pois não distingue maiúsculas de minúsculas, como dito anteriormente. No entanto, ao procurar Henrique a função retorna o erro #N/D (não disponível) porque, obviamente, o registro Henrique não consta na tabela.

Muitos usuários acham esteticamente desagradável numa Planilha esses erros ficarem expostos. Há uma solução para que a fórmula retorne um resultado em branco no caso de uma correspondência ser encontrada. As fórmulas em G5, G6 e G7 seriam, respectivamente:

=SEERRO(PROCV(F5;B3:D7;2;0);"")

=SEERRO(PROCV(F6;B3:D7;2;0);"")

=SEERRO(PROCV(F7;B3:D7;2;0);"")

O resultado será:

Para visualizar a tabela azul acima, ficou bem mais agradável.

O funcionamento da fórmula SEERRO é simples: caso a expressão no primeiro parâmetro retornar um erro, o segundo parâmetro (que nosso caso, é vazio, dado pela duplas aspas) será retornado. Vale lembrar que a função SEERRO só pode ser usada a partir do Excel 2007.

 

O Parâmetro procura_intervalo

Conforme dito anteriormente, o parâmetro procura_intervalo é o último argumento do PROCV. Sabemos o comportamento da função quando ele é FALSO. Observe a tabela abaixo para entender quando ele é VERDADEIRO:

O exemplo acima mostra a nota de alguns alunos, e o objetivo é atribuir o conceito correto de acordo com as regras da tabela verde.

A fórmula é E7 é:

=PROCV(D7;$G$5:$H$10;2;VERDADEIRO)

Copie a fórmula para baixo para completar a tabela azul.

Observe que, ao usar o argumento procura_intervalo como Verdadeiro, busca-se uma correspondência aproximada na tabela. Note que a correspondência sempre retorna o valor do limite inferior (exemplo: uma nota 59 busca a correspondência de 50, e não 60)

É imprescindível que a primeira coluna da matriz_tabela (ou seja, a coluna que são buscadas as correspondências) seja numérica e esteja classificada em ordem crescente. Do contrário, essa forma de PROCV não funcionará corretamente.

Observe também que a matriz_tabela deve mostrar qual é o valor mínimo possível buscado (no nosso caso, 0), mas não precisa constar o valor máximo possível (no nosso caso, 100).

Com esse parâmetro sendo Verdadeiro e a primeira coluna da matriz_tabela sendo composta por textos e não números, o PROCV retorna a correspondência da linha de maior número.

 

Automatizando o n.º_índice_coluna

Vamos para um outro cenário. Suponha que tenhamos a tabela abaixo:

Note que nesse novo cenário temos um grande número de colunas. OK, então para preenchermos todo o conteúdo com PROCV, basta que:

Em E12: =PROCV(D12;$B$3:$Y$7;2;0) , e então copiar a fórmula por toda a coluna ;

Em F12: =PROCV(D12;$B$3:$Y$7;3;0) , e então copiar a fórmula por toda a coluna ;

Em G12: =PROCV(D12;$B$3:$Y$7;4;0) , e então copiar a fórmula por toda a coluna ;

E assim por diante, sempre incrementando o n.º_índice_coluna em uma unidade. Há um jeito mais fácil para entramos uma célula em E12 e copiá-la para todas as células da tabela azul:

=PROCV($D12;$B$3:$Y$7;COLUNA(B:B);0) , e copiar a fórmula para todas as células da tabela.

$D12 deve estar com a coluna em referência absoluta para que quando a fórmula seja colada lateralmente, o valor de procura (valor_procura) se mantenha sempre na mesma coluna. A novidade aqui é o trecho COLUNA(B:B), que retorna qual é o número da coluna de uma referência. Ora, sabemos que a coluna B é a 2. Como esse trecho está em referência relativa, a célula à sua direita será na coluna C, que corresponde ao 3 e assim por diante.

 

PROCV em Referências Externas

O PROCV pode ser usado para buscar informações em outra Planilha da Pasta de Trabalho ou até mesmo de planilhas de outras pastas de trabalho.

 

PROCV em Outra Planilha

Considere a situação:

Essas duas planilhas estão na mesma pasta de trabalho. O objetivo é preencher a tabela Nomes com as informações da planilha Tabela usando o PROCV. Para a coluna Pontos, isso pode ser feito com a fórmula:

=PROCV($B3;Tabela!$B$3:$D$7;2;0)

Observe o termpo Tabela!$B$3:$D$7. Antes da referência há um nome com exclamação (Tabela!), que corresponde de qual tabela a referência aponta ($B$3:$D$7).

Nota: Se o nome da outra planilha possuir espaços, como Tabela de Dados, seria necessário usar aspas simples na representação da referência, tornando-se, por exemplo, 'Tabela de Dados'!$B$3:$D$7. Vale ressaltar que o símbolo de exclamação fica fora das aspas.

Quando faço esse tipo de PROCV, costumo fazer a notação da matriz_tabela de uma forma diferente, conforme a seguir:

=PROCV($B3;Tabela!$B:$D;2;0)

Note que ao invés de utilizar 'Tabela de Dados'!$B$3:$D$7, uso Tabela!$B:$D. Isso economiza tempo para digitação da fórmula sabendo-se que CTRL+Barra de espaço, no Excel, seleciona uma coluna inteira (em tempo: SHIFT+Barra de espaço seleciona uma linha).

 

PROCV em Outra Pasta de Trabalho

E se a tabela de pesquisa de um valor estiver em outra pasta de trabalho? Veja o exemplo abaixo:

Temos duas pastas de trabalho: Preencher e Banco de Informações. Para preencher os dados da coluna Pontos de Nomes usando a tabela da planilha Tabela de Dados da pasta de trabalho Banco de Informações, use a fórmula:

=PROCV($B3;'[Banco de Informações.xlsx]Tabela de Dados'!$B:$D;2;0)

Observe que, para esse caso, foi necessário referenciar outra pasta de trabalho, além de sua planilha. Para referenciar uma pasta de trabalho ativa, coloque-a entre colchetes. Vale novamente ressaltar as aspas simples: a de início fica antes do colchete e a segunda antes do exclamação.

Será que é necessário abrir as duas planilhas toda vez que necessitar povoar a tabela de Nomes na pasta de trabalho Preencher? Não. Observe que, se você fechar a pasta de trabalho Banco de Informações, o Excel automaticamente irá adaptar sua fórmula de PROCV para algo do tipo:

=PROCV($B3;'C:\Users\Padrao\Desktop\[Banco de Informações.xlsx]Tabela de Dados'!$B:$D;2;0)

Como a pasta que contém a tabela de referência foi fechada, é necessário que o Excel saiba todo o caminho do arquivo de consulta para que ele consiga atualizar os dados da planilha Nomes. Então, ele automaticamente preenche o caminho em todas as ocorrências da fórmula na tabela.

 

Retornar Todas as Correspondências de um PROCV

A limitação da função PROCV é que ela encontra apenas a primeira ocorrência de uma correspondência num vetor. Ás vezes, precisamos retornar todas essas correspondências. Se necessita disso, visite o artigo Retornar Todas as Correspondências de um PROCV.

 

PROCV com Critérios

Considere a tabela abaixo:

O objetivo é retornar o Código através de um PROCV que como entrada de parâmetros tem Felipe, Tarde e Escritório. Observe que no total tem-se duas correspondências para essa busca. Duas fórmulas podem ser usadas para esse caso, uma que retorna a primeira correspondência na tabela, e outra que retorna a última.

Para retornar a primeira correspondência, se B14=Felipe, C14=Tarde, D14=Escritório:

=ÍNDICE(E3:E11;CORRESP(1;(B3:B11=B14)*(C3:C11=C14)*(D3:D11=D14);0)) (fórmula matricial)

Para retornar a última correspondência, se B18=Felipe, C18=Tarde, D18=Escritório:

=PROC(1;(1/(B3:B11=B18)*(C3:C11=C18)*(D3:D11=D18));E3:E11)

A imagem abaixo ilustra os dois casos:

Note que se houver um valor intermediário, o mesmo não será possível de se obter.

 

Explicação

Ambas as fórmulas possuem o termo (B3:B11=B14)*(C3:C11=C14)*(D3:D11=D14), que pode ser representado abaixo:

Vamos chamar a coluna Resultado, que possui 0 e 1, de vetor. Obviamente, temos 1 apenas quando as três condições são satisfeitas (B3:B11=B14)*(C3:C11=C14)*(D3:D11=D14).

Reescrevendo a solução que possui ÍNDICE, temos:

=ÍNDICE(E3:E11;CORRESP(1;vetor;0)) (fórmula matricial)

CORRESP varre um vetor do início até o fim. Logo, será procurado 1 em vetor. A função retorna 4, já que o quarto elemento de vetor é 1. Reescrevendo a fórmula:

=ÍNDICE(E3:E11;4) (fórmula matricial)

Essa função retornará o quarto elemento do vetor E3:E11, que é 70.

 

De forma análoga, ao reescrevermos a solução usando PROC:

=PROC(1;1/vetor;E3:E11)

O cálculo 1/vetor é mostrado abaixo:

PROC, ao contrário de CORRESP, varre um vetor do último elemento ao primeiro. Logo, PROC buscará 1 em 1/vetor de trás para a frente, encontrando o oitavo elemento, e retornará o oitavo elemento de E3:E11, que é 150.

 

Procurar Valores à Esquerda de uma Tabela

Observe a situação abaixo:

Seu objetivo é procurar os valores da coluna E em C, e retornar os Pontos e Cidade de cada ocorrência. A fórmula abaixo, em F2, não serve para nós:

=PROCV($E2;$A$2:$C$6;2;0)

O resultado retornado será #N/D. Isso ocorre porque, conforme explicado no início deste artigo, Ricardo será procurado na primeira coluna da matriz_tabela, isto é, Pontos. Como nenhuma ocorrência é encontrada, o erro é retornado.

Existem algumas formas de se trabalhar nessa situação, conforme mostrado abaixo.

 

Fazer Cópia de Coluna para o Início da matriz_tabela

Se sua matriz_tabela for pequena, você poderia clicar sobre a coluna C, pressionar Ctrl+C, em seguida clicar com o botão da direita em A e selecionar Inserir células copiadas. O resultado final será como se segue:

 

Agora, basta inserir a fórmula em G2 a fórmula

=PROCV($F2;$A$2:$C$6;COLUNA(B:B);0)

e copiá-la por todo intervalo G2:H26.

Note que ao se inserir uma coluna no início da tabela verde, todas referências foram deslocadas em uma coluna.

No entanto, nem sempre é possível utilizar essa técnica. Pode ser que às vezes a matriz_tabela esteja bloqueada ou as células estão desconfortavelmente mescladas e o usuário não pode copiar uma coluna da matriz_tabela. Os exemplos a seguir tratam dessa situação.

 

Utilizando Funções CORRESP, DESLOC e ÍNDICE

Para a tabela original, poderíamos escrever a fórmula em órmula em F2:

=DESLOC(A$1;CORRESP($E2;$C$2:$C$6;0);0)

Então, copiar e colar essa fórmula para o intervalo G2:H26.

Poderíamos também usar a fórmula em F2:

=ÍNDICE(A$2:A$6;CORRESP($E2;$C$2:$C$6;0))

E copiá-la para o intervalo G2:H26.

 

Explicação

Veja que nas duas fórmulas são utilizadas a função CORRESP. A função CORRESP retorna o índice do elemento $E2 no vetor $C$2:$C$6. No nosso caso, por exemplo, Rodrigo retornaria o valor 4, pois no vetor $C$2:$C$6, Rodrigo é o 4o elemento. O terceiro argumento de CORRESP, o número 0, indica que estamos querendo uma correspondência exata, e não aproximada.

A primeira fórmula ficaria então na forma (para $E2=Rodrigo):

=DESLOC(A$1;4;0)

A função DESLOC translada a partir de uma referência uma certa quantidade de linhas e colunas, na forma

=DESLOC(referencia;linhas;colunas)

Logo, no nosso exemplo de DESLOC, a partir de A$1 desloca-se 4 linhas para baixo e 0 colunas, retornando a correspondência desejada para Rodrigo, que é 1129.

 

A segunda fórmula ficaria:

=ÍNDICE(A$2:A$6;4)

A função índice retorna o elemento número 4 do vetor A$2:A$6, que é 1129.

 

Rearranjar matriz_tabela Dentro do PROCV

Para a tabela original, poderíamos escrever a fórmula em F2:

=PROCV($E2;ESCOLHER({1\2};$C$2:$C$6;A$2:A$6);2;0)

Atenção: No Excel 2007 ou inferior, troque o símbolo \ por .

Então, copiar e colar essa fórmula para o intervaldo G2:H26.

A função ESCOLHER é da forma:

ESCOLHER(número;termo1;termo2;termo3;...;termo_n)

Se número for igual a 1, retorna-se o termo1. Se número for igual a 2, retorna-se o termo2 e assim por diante. Quando inserimos um vetor dentro do parâmetro número, como {1\2}, criamos dinamicamente uma matriz (tabela) cuja primeira coluna é formada por $C$2:$C$6 e segunda coluna é A$2:A$6. Como procura_intervalo é 2, retorna-se corretamente a correspondência de $C$2:$C$6 em A$2:A$6.

Meus agradecimentos a mcbranco por essa fórmula.

 

Referências

Para fazer o download de todos os exemplos desta página, clique aqui.

 

---

Site de Felipe Costa Gualberto.

Belo Horizonte, Brasil, 2009-2013.

felipe@ambienteoffice.com.br