You are on page 1of 15

PROCV

ltima atualizao: 06/12/2011


Introduo
Automatizando o n._ndice_coluna
O Parmetro procura_intervalo
PROCV em Referncias Externas
-PROCV em Outra Planilha
-PROCV em Outra Pasta de Trabalho
Retornar Todas as Correspondncias de um PROCV
PROCV com Critrios
-Explicao
Procurar Valores Esquerda de uma Tabela
-Fazer Cpia de Coluna para o Incio da matriz_tabela
-Utilizando Funes CORRESP, DESLOC e NDICE
-Explicao
-Rearranjar matriz_tabela Dentro do PROCV
Referncias

Introduo
A frmula PROCV uma das funes mais usadas no Excel. Tal fato se justifica pela grande
utilidade da mesma: retorna a correspondncia da coluna vizinha de um elemento em uma
tabela. Exemplo: na tabela abaixo, deseja-se preencher a tabela azul (que contm muitas
linhas) com os Pontos de cada Nome, de acordo com a tabela de referncia, 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 frmula PROCV procura um valor ou
referncia numa tabela e retorna a correspondncia na clula. Nesse exemplo, poderamos
escrever emG5:
=PROCV(F5;B3:D7;2;0)

e pressionar ENTER:

A frmula retornou 563, corretamente. Observe que ela possui 4 parmetros:


=PROCV(valor_procura;matriz_tabela;n._ndice_coluna;procura_intervalo)
valor_procura pode ser um valor ou uma referncia (ou seja, uma outra clula 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 clula. Esse valor um nmero
inteiro igual ou maior que 1. No exemplo acima, foi necessrio atribuir 2 a esse parmetro
para retornar quantos Pontos um Nome tem porque Pontos a coluna logo direita, ou seja,
a coluna2 tendo-se como como 1 a coluna de referncia. importante lembrar que
a matriz_tabela deve ser larga o suficiente para acomodar on._ndice_coluna a ser
usado na frmula, ou seja, se voc deseja usar 5 para o n._ndice_coluna,
a matriz_tabela deve ser no mnimo, por exemplo, A1:E1000, ou D8:Y500. Se
o n._ndice_coluna ultrapassar a largura da matriz_tabela, o erro #REF! ser retornado
clula.
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 parmetro pode ser usado.
importante lembrar que o PROCV no distingue maisculas de minsculas, isto , se
na matriz_tabela conter o registro Felipe e ovalor_procura for felipe, a frmula tratar
esse caso normalmente e retornar sua correspondncia.
Para o nosso exemplo, como preencher a clula H5, para retornar a Cidade de
um Nome especfico? Ser a mesma frmula para retornar osPontos, somente alterando o
parmetro n._ndice_coluna da frmula de 2 para 3, j que se considerarmos a
coluna Nome como 1, Pontosser a 2 e ento Cidade ser a 3:
=PROCV(F5;B3:D7;3;0)

O resultado ser, corretamente Bzios.


A prxima etapa copiar a frmula para todas as clulas da tabela a ser preenchida. Para
fazer isso, precisamos fixar a referncia da tabela a ser pesquisada (matriz_tabela), seno
a tabela de procura ir deslocar quando se colar frmula 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 referncias relativas e absolutas.
Pronto, agora s copiar essa frmula para as todas as outras clulas das colunas, ou seja,
copiar-se- a clula G5 para todas as clulas da coluna G e H5 para todas as clulas da
coluna H.

Suprimindo Erros no PROCV


Caso um valor procurado no seja encontrado na tabela de busca, o Excel retorna #N/D para
a clula:

Veja que o PROCV consegue retornar com sucesso as correspondncias de Ricardo e ricardo,
pois no distingue maisculas de minsculas, como dito anteriormente. No entanto, ao
procurar Henrique a funo retorna o erro #N/D (no disponvel) porque, obviamente, o
registro Henrique no consta na tabela.

Muitos usurios acham esteticamente desagradvel numa Planilha esses erros ficarem
expostos. H uma soluo para que a frmula retorne um resultado em branco no caso de
uma correspondncia ser encontrada. As frmulas 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 agradvel.


O funcionamento da frmula SEERRO simples: caso a expresso no primeiro parmetro
retornar um erro, o segundo parmetro (que nosso caso, vazio, dado pela duplas aspas)
ser retornado. Vale lembrar que a funo SEERRO s pode ser usada a partir do Excel
2007.

O Parmetro procura_intervalo
Conforme dito anteriormente, o parmetro procura_intervalo o ltimo argumento
do PROCV. Sabemos o comportamento da funo 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 frmula E7 :
=PROCV(D7;$G$5:$H$10;2;VERDADEIRO)
Copie a frmula para baixo para completar a tabela azul.
Observe que, ao usar o argumento procura_intervalo como Verdadeiro, busca-se
uma correspondncia aproximada na tabela. Note que a correspondncia sempre retorna
o valor do limite inferior (exemplo: uma nota 59 busca a correspondncia de 50, e no 60)
imprescindvel que a primeira coluna da matriz_tabela (ou seja, a coluna que so
buscadas as correspondncias) seja numrica e esteja classificada em ordem crescente. Do
contrrio, essa forma de PROCV no funcionar corretamente.
Observe tambm que a matriz_tabela deve mostrar qual o valor mnimo possvel buscado
(no nosso caso, 0), mas no precisa constar o valor mximo possvel (no nosso caso, 100).
Com esse parmetro sendo Verdadeiro e a primeira coluna da matriz_tabela sendo
composta por textos e no nmeros, o PROCV retorna a correspondncia da linha de maior
nmero.

Automatizando o n._ndice_coluna
Vamos para um outro cenrio. Suponha que tenhamos a tabela abaixo:

Note que nesse novo cenrio temos um grande nmero de colunas. OK, ento para
preenchermos todo o contedo com PROCV, basta que:
Em E12: =PROCV(D12;$B$3:$Y$7;2;0) , e ento copiar a frmula por toda a coluna ;
Em F12: =PROCV(D12;$B$3:$Y$7;3;0) , e ento copiar a frmula por toda a coluna ;
Em G12: =PROCV(D12;$B$3:$Y$7;4;0) , e ento copiar a frmula por toda a coluna ;
E assim por diante, sempre incrementando o n._ndice_coluna em uma unidade. H um
jeito mais fcil para entramos uma clula em E12 e copi-la para todas as clulas da tabela
azul:
=PROCV($D12;$B$3:$Y$7;COLUNA(B:B);0) , e copiar a frmula para todas as clulas
da tabela.
$D12 deve estar com a coluna em referncia absoluta para que quando a frmula 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 nmero da coluna
de uma referncia. Ora, sabemos que a coluna B a 2. Como esse trecho est em referncia
relativa, a clula sua direita ser na coluna C, que corresponde ao 3 e assim por diante.

PROCV em Referncias Externas


O PROCV pode ser usado para buscar informaes em outra Planilha da Pasta de Trabalho
ou at mesmo de planilhas de outras pastas de trabalho.

PROCV em Outra Planilha

Considere a situao:

Essas duas planilhas esto na mesma pasta de trabalho. O objetivo preencher a


tabela Nomes com as informaes da planilha Tabela usando oPROCV. Para a coluna Pontos,
isso pode ser feito com a frmula:
=PROCV($B3;Tabela!$B$3:$D$7;2;0)
Observe o termpo Tabela!$B$3:$D$7. Antes da referncia h um nome com exclamao
(Tabela!), que corresponde de qual tabela a referncia aponta ($B$3:$D$7).
Nota: Se o nome da outra planilha possuir espaos, como Tabela de Dados, seria necessrio
usar aspas simples na representao da referncia, tornando-se, por exemplo, 'Tabela de
Dados'!$B$3:$D$7. Vale ressaltar que o smbolo de exclamao fica fora das aspas.
Quando fao esse tipo de PROCV, costumo fazer a notao da matriz_tabela de uma forma
diferente, conforme a seguir:
=PROCV($B3;Tabela!$B:$D;2;0)
Note que ao invs de utilizar 'Tabela de Dados'!$B$3:$D$7, uso Tabela!$B:$D. Isso
economiza tempo para digitao da frmula sabendo-se que CTRL+Barra de espao, no
Excel, seleciona uma coluna inteira (em tempo: SHIFT+Barra de espao 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 Informaes. Para preencher os dados
da coluna Pontos de Nomes usando a tabela da planilha Tabela de Dados da pasta de
trabalho Banco de Informaes, use a frmula:
=PROCV($B3;'[Banco de Informaes.xlsx]Tabela de Dados'!$B:$D;2;0)
Observe que, para esse caso, foi necessrio referenciar outra pasta de trabalho, alm de sua
planilha. Para referenciar uma pasta de trabalho ativa, coloque-a entre colchetes. Vale
novamente ressaltar as aspas simples: a de incio fica antes do colchete e a segunda antes
do exclamao.
Ser que necessrio abrir as duas planilhas toda vez que necessitar povoar a tabela
de Nomes na pasta de trabalho Preencher? No. Observe que, se voc fechar a pasta de
trabalho Banco de Informaes, o Excel automaticamente ir adaptar sua frmula
de PROCV para algo do tipo:
=PROCV($B3;'C:\Users\Padrao\Desktop\[Banco de Informaes.xlsx]Tabela de
Dados'!$B:$D;2;0)
Como a pasta que contm a tabela de referncia foi fechada, necessrio que o Excel saiba
todo o caminho do arquivo de consulta para que ele consiga atualizar os dados da
planilha Nomes. Ento, ele automaticamente preenche o caminho em todas as ocorrncias
da frmula na tabela.

Retornar Todas as Correspondncias de um PROCV


A limitao da funo PROCV que ela encontra apenas a primeira ocorrncia de uma
correspondncia num vetor. s vezes, precisamos retornar todas essas correspondncias. Se
necessita disso, visite o artigo Retornar Todas as Correspondncias de um PROCV.

PROCV com Critrios


Considere a tabela abaixo:

O objetivo retornar o Cdigo atravs de um PROCV que como entrada de parmetros


tem Felipe, Tarde e Escritrio. Observe que no total tem-se duas correspondncias para essa
busca. Duas frmulas podem ser usadas para esse caso, uma que retorna a primeira
correspondncia na tabela, e outra que retorna a ltima.
Para retornar a primeira correspondncia, se B14=Felipe, C14=Tarde, D14=Escritrio:
=NDICE(E3:E11;CORRESP(1;(B3:B11=B14)*(C3:C11=C14)*(D3:D11=D14);0)) (f
rmula matricial)
Para retornar a ltima correspondncia, se B18=Felipe, C18=Tarde, D18=Escritrio:
=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 intermedirio, o mesmo no ser possvel de se obter.

Explicao
Ambas as frmulas 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 trs condies so satisfeitas(B3:B11=B14)*(C3:C11=C14)*(D3:D11=D14).

Reescrevendo a soluo que possui NDICE, temos:


=NDICE(E3:E11;CORRESP(1;vetor;0)) (frmula matricial)
CORRESP varre um vetor do incio at o fim. Logo, ser procurado 1 em vetor. A funo
retorna 4, j que o quarto elemento de vetor 1. Reescrevendo a frmula:
=NDICE(E3:E11;4) (frmula matricial)
Essa funo retornar o quarto elemento do vetor E3:E11, que 70.

De forma anloga, ao reescrevermos a soluo usando PROC:


=PROC(1;1/vetor;E3:E11)
O clculo 1/vetor mostrado abaixo:

PROC, ao contrrio de CORRESP, varre um vetor do ltimo elemento ao primeiro.


Logo, PROC buscar 1 em 1/vetor de trs 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 situao abaixo:

Seu objetivo procurar os valores da coluna E em C, e retornar os Pontos e Cidade de cada


ocorrncia. A frmula abaixo, em F2, no serve para ns:
=PROCV($E2;$A$2:$C$6;2;0)
O resultado retornado ser #N/D. Isso ocorre porque, conforme explicado no incio deste
artigo, Ricardo ser procurado na primeira coluna damatriz_tabela, isto , Pontos. Como
nenhuma ocorrncia encontrada, o erro retornado.
Existem algumas formas de se trabalhar nessa situao, conforme mostrado abaixo.

Fazer Cpia de Coluna para o Incio da matriz_tabela


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

Agora, basta inserir a frmula em G2 a frmula


=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 incio da tabela verde, todas referncias foram
deslocadas em uma coluna.
No entanto, nem sempre possvel utilizar essa tcnica. Pode ser que s vezes
a matriz_tabela esteja bloqueada ou as clulas esto desconfortavelmente mescladas e o
usurio no pode copiar uma coluna da matriz_tabela. Os exemplos a seguir tratam dessa
situao.

Utilizando Funes CORRESP, DESLOC e NDICE


Para a tabela original, poderamos escrever a frmula em rmula em F2:
=DESLOC(A$1;CORRESP($E2;$C$2:$C$6;0);0)
Ento, copiar e colar essa frmula para o intervalo G2:H26.
Poderamos tambm usar a frmula em F2:
=NDICE(A$2:A$6;CORRESP($E2;$C$2:$C$6;0))
E copi-la para o intervalo G2:H26.

Explicao
Veja que nas duas frmulas so utilizadas a funo CORRESP. A funo 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 deCORRESP, o nmero 0, indica que estamos querendo uma
correspondncia exata, e no aproximada.
A primeira frmula ficaria ento na forma (para $E2=Rodrigo):
=DESLOC(A$1;4;0)
A funo DESLOC translada a partir de uma referncia 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 correspondncia desejada paraRodrigo, que 1129.

A segunda frmula ficaria:


=NDICE(A$2:A$6;4)
A funo ndice retorna o elemento nmero 4 do vetor A$2:A$6, que 1129.

Rearranjar matriz_tabela Dentro do PROCV


Para a tabela original, poderamos escrever a frmula em F2:
=PROCV($E2;ESCOLHER({1\2};$C$2:$C$6;A$2:A$6);2;0)
Ateno: No Excel 2007 ou inferior, troque o smbolo \ por .
Ento, copiar e colar essa frmula para o intervaldo G2:H26.
A funo ESCOLHER da forma:
ESCOLHER(nmero;termo1;termo2;termo3;...;termo_n)
Se nmero for igual a 1, retorna-se o termo1. Se nmero for igual a 2, retorna-se
o termo2 e assim por diante. Quando inserimos um vetor dentro do parmetro nmero,
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 correspondncia de $C$2:$C$6 em A$2:A$6.
Meus agradecimentos a mcbranco por essa frmula.