Vous êtes sur la page 1sur 14

Variaes da funo PROCV no Excel: mais

de uma condio e valores repetidos


Rafael vila 75 comentrios Excel
procv

procv com duas condies

procv com valores repetidos

Compartilhe com amigos:

Este contedo faz parte da srie:


Excel Frmulas Avanadas
Ver 10 posts dessa srie

Baixe este artigo em PDF

O PROCV uma das melhores funes de busca que o Excel disponibiliza


para seus usurios. Digo isso, porque no muito complicado de entender o
seu funcionamento e existem diversos tutoriais na internet de como usar a
funo. Ns mesmo j escrevemos um post bem completo sobre como usar
PROCV (VLOOKUP).

Se voc um dos que preferem ver a explicao em vdeo, temos uma aula
inteira do nosso curso de Excel Iniciante e Intermedirio para o PROCV. Caso voc j
conhea o PROCV e queira conhecer algumas funes mais avanadas como
a NDICE (que falaremos mais ao longo desse post), recomendo o nosso curso
de Excel Avanado.

2 Possveis Problemas com o PROCV


Existem dois problemas que podem dificultar o uso dessa funcionalidade:

1. Quando voc tem mais de uma condio


No exemplo acima, temos duas condies, marca e tipo de veculo. Se
quisssemos utilizar o PROCV sem nenhuma outra funo para ajudar a achar
o valor base na tabela de especificao de valor teramos problemas, pois ou
utilizaramos a coluna de marca ou a de tipo de veculo.

2. Quando voc quer ver todos os resultados possveis

Nesse caso, temos um problema clssico, que quando voc quer ver todos os
valores de vendas realizadas, mas a PROCV s iria te retornar um valor e,
nesse caso, temos um mnimo de 2 valores por opo.

Vamos ver agora como resolver cada um desses problemas e o que voc
precisa usar para chegar no melhor resultado.

1. Exemplo de PROCV com mais de uma


condio
Como tudo no Excel, possvel sempre pensar em lgicas utilizando outras
funes para resolver o seu problema. Por isso, vamos primeiro entender o
problema que estamos enfrentando aqui entendendo o conceito da PROCV.
Veja sua sintaxe:

=PROCV(valor_procurado;matriz_tabela;nm_ndice_coluna;intervalo)

O problema:

O valor procurado um valor nico e no nosso caso queremos olhar dois


valores diferentes: marca e tipo de veculo

No conseguiramos utilizar no valor_procurado as clulas G4 e G5 ao mesmo


tempo.

A soluo:

Encontrar uma funo que transforme esses 2 valores em um valor nico.


Como sabemos, a funo CONCATENAR serve para agrupar cadeias de
caracteres. Se quiser se lembrar mais, veja o nosso post com 5 aplicaes da
CONCATENAR. Ao utilizar ela nas clulas G4 e G5, teramos algo como:
Veja que eu coloquei um hfen na concatenao para ter um texto mais
amigvel. Sem ele ficaria IvecoFurgo, o que poderia confundir um usurio
que no entendesse o objetivo da mesma.

Como ficaria o resultado:

Agora, para ter o resultado corretamente, voc precisa criar uma coluna a mais
na tabela de base de dados, para ter o mesmo tipo de resultado. Veja:
Se a coluna extra no te agradar, voc pode ocultar sem problema algum.
Agora fica s faltando usar o PROCV utilizando como valor procurado a
clula que adicionamos e a matriz que busca os valores nas colunas D e E,
veja na frmula:
Pronto, a funo funciona perfeitamente e voc pode utilizar at para mais de
duas colunas se quiser. Tambm possvel usar o CONCATENAR
diretamente na funo, veja:

2. Exemplo de PROCV em uma lista com valores


repetidos
No nosso segundo caso no temos mais o problema de buscar 2 tipos de
valores diferentes, mas temos uma nica lista com valores repetidos:

Veja que na nossa lista de vendedores temos o Jarbas (2 repeties), o Josias


(4 repeties) e o Jonas (3 repeties). A tentar buscar um histrica das
vendas de cada um deles vamos ter problemas.

O problema:

Observe que ao utilizar o PROCV ele sempre vai buscar o primeiro


valor_procurado Jarbas e, quando encontrar, vai retornar a segunda ou terceira
coluna, dependendo do que estivermos buscando. Acontece que quando
levamos essa frmula para baixo para tentar ver as outras vendas ela no
funciona, continua retornando os mesmos valores.
A soluo:

Podemos utilizar a funo NDICE em conjunto com outras (MENOR, SE e


LIN) para criar uma funo matricial que busque todas as ocorrncias para o
valor procurado.

Como ficaria o resultado:

Para ter o resultado corretamente ser necessrio usar a seguinte funo:


{=SEERRO(NDICE($B$4:$D$12;MENOR(SE($B$4:$B$12=$G$4;LIN($B
$4:$B$12)-3);LIN(A1));2);)}

Veja que a funo tem chaves { } antes de comear e ao final, isso indica que
uma funo matricial. Para tornar a sua funo em uma funo matricial
basta apertar CTRL + SHIFT + ENTER depois de escrever ela por completo.
Se modificssemos o nome do vendedor na nossa lista teramos um novo
resultado:

Passo a passo de uso das funes nessa frmula


matricial:

Como temos uma funo bem complexa, vou te mostrar o passo a passo para
que voc entenda cada fator explicado.

Passo 1 SE com LIN

Para comear, a primeira funo que utilizaremos a SE com LIN


=SE($B$4:$B$12=$G$4;LIN($B$4:$B$12)-3)

Basicamente eu estou pedindo para o Excel analisar a linha B entre as clulas


4 e 12 (que onde eu tenho as vendas poderia ser maior se eu tivesse mais
vendas). Toda vez que ele encontrar um resultado igual ao valor de G4 (nome
do vendedor), ele vai retornar a linha desse resultado.

No nosso caso acima seriam as linhas 5, 8, 11 e 12. Agora eu subtraio 3 desses


valores para eu simular que minha lista comece na linha. Assim, eu teria os
valores 2, 5, 8 e 9.

Passo 2 MENOR

Agora eu quero dizer ao Excel que dos valores que ele encontrou, que ele me
retorne o menor

=MENOR(SE($B$4:$B$12=$G$4;LIN($B$4:$B$12)-3);LIN(A1))

Veja que a nica parte da frmula com referncia relativa a LIN(A1). Isso
ocorre propositalmente para quando arrastarmos a frmula para baixo, ela
retornar o segundo, terceiro e quarto menor respectivamente. Por isso
conseguimos colocar a ordem das vendas corretamente. Se marcssemos outro
vendedor, teramos apenas as vendas realizadas por ele numeradas na ordem
correta:
Como o Jonas s realizou 3 vendas, aparece um erro #NM! no local da
venda 4. De toda forma, a gente ainda no conseguiu colocar o nome do
produto vendido, apenas a sua referncia. Para chegar nesse resultado
utilizaremos a funo NDICE

Passo 3 NDICE

Como falamos l no comeo, essa a funo principal para chegar nesse


resultado, j que ela faz buscas em uma determinada lista a partir de valores
imputados. Dessa forma, faremos uma busca na tabela B4:D12 procurando a
referncia de linha obtida pela funo menor e analisando sempre o valor da
segunda coluna (tipo de veculo) da nossa tabela inicial de referncia:

Assim transformamos os nmeros em valores e j estamos com o resultado


desejado. Agora s falta ajustar a frmula para no aparecer erros e depois
replicar para a coluna ao lado para obter os valores das vendas.
Passo 4 SEERRO

Esse passo bem simples e sem mistrio. Basta repetir a funo usada
colocando o SEERRO na frente e deixando um (valor em branco) no final.
Lembrando que a funo matricial, desde o incio, isso faz com que toda vez
que mexermos na caixa de frmula tenhamos que usar o CTRL + SHIFT +
ENTER.

Lembre-se tambm de usar a ala de preenchimento para arrastar as frmulas


para baixo e no ter que fazer uma a uma.

Assim sumiremos com o valor de erro. Entenda, ele ainda est l, s que fica
disfarado de valor em branco para sua planilha ficar mais amigvel para
quem estiver visualizando.

Passo 5 Replicar a frmula para buscar os valores base

Por fim, se quisermos fazer a mesma funo na coluna ao lado s copiar e


colar. Obviamente que teremos que fazer uma mudana: trocar o valor 2 da
funo NDICE para o valor 3. Faremos isso, porque agora queremos buscar
os valores base (coluna D) da nossa tabela auxiliar.

Pronto, essa seria a funo da coluna D:

{=SEERRO(NDICE($B$4:$D$12;MENOR(SE($B$4:$B$12=$G$4;LIN($B
$4:$B$12)-3);LIN(A1));2);)}

Como voc faz?


Se voc curtiu as possibilidades do PROCV e da funo NDICE e quer
aprender um pouco mais sobre elas, experimente conhecer o nosso curso de
Excel Avanado.

Caso voc utilize outras funes ou formas para chegar nesses resultados,
conta pra gente nos comentrios.