Talvez o PROCV seja das funções mais conhecidas e pesquisadas do Excel. Ela é muito útil para buscar informações em tabelas entre tabelas distintas. O PROCV irá buscar um valor na primeira coluna da esquerda de uma tabela e irá retornar um valor na mesma linha de acordo com um número de colunas especificado. Quem conhece a função PROCV sabe que ela irá trazer o valor referente a primeira linha localizada, começando de cima para baixo da tabela. Mesmo que existam outros valores iguais na primeira coluna, o resultado do PROCV será referente a linha do primeiro valor localizado. Veja a imagem:
Veja que a aplicação da função PROCV na imagem trouxe como resultado a cor “Roxo”, sendo que existem duas correspondências para o nome “Rafael”. Conforme explicado, o PROCV traz o valor da primeira linha localizada.
Como fazer então para buscar o valor da última linha encontrada?
Vou mostrar uma técnica simples para trazer o última valor. Apesar deste artigo estar nomeado como “PROCV invertido”, a função que vamos utilizar não é o PROCV, mas uma função “irmã” chamada PROC.
A fórmula para trazer o valor da última linha é:
=PROC(2;1/(Intervalo de busca = valor procurado);Intervalo com valor de resposta desejado)
No Exemplo da imagem, a fórmula para trazer o último valor seria:
=PROC(2;1/(B5:B16=G6);D5:D16)
Veja a imagem:
Veja que esta estrutura de fórmula funciona para tabelas na horizontal também, fazendo o papel equivalente ao PROCH para trazer o último valor localizado:
Explicando a lógica desta fórmula, primeiro é preciso entender o que é a função PROC. A explicação dela no próprio Excel é “Procura um valor de linha ou coluna ou de uma matriz“com a sintaxe definida como PROC(valor_Procurado, Vetor_de_Procura, Vetor_de_Resultado).
Como a função aceita uma matriz no seu segundo argumento, podemos trabalhar com um teste lógico, que gera como resultado VERDADEIRO ou FALSO. Ao dividir 1 por estes elementos temos como resposta ou 1 (quando 1/VERDADEIRO) ou #DIV/0 (quando 1/FALSO), assim a matriz de busca vai ser sempre algo como:
{1;#DIV/0;1;1;#DIV/0;#DIV/0;1…}
A fórmula no exemplo fica:
=PROC(2;{1;#DIV/0;#DIV/0;#DIV/0;#DIV/0;#DIV/0;1;#DIV/0;#DIV/0;#DIV/0;#DIV/0;#DIV/0;};{Roxo;Rosa;Vermelho;Laranja;Amarelo;Preto;Branco;Cinza;Verde;Salmão;Bege;Marrom})
E por fim, um comportamento desejado da função. Ela vai procurar o número 2 na matriz que só vai conter 1 ou #DIV/0, e não encontrando ela vai retornar o último elemento que mais se aproxima de 2, ou seja, o último 1 da matriz, que vai trazer como resposta o elemento equivalente da matriz de resultado, que no exemplo é o “BRANCO”.
Em algum próximo post vou explicar como trazer um elemento de acordo com a ordem desejada, por exemplo, trazer a cor referente a 4ª ocorrência do nome “Rafael” na tabela. Aguardem!!
Mudou minha vida! Muito obrigada estava a procura da explicação a muito tempo!
CurtirCurtir
Obrigado pela dica Amigo, me será muito útil esta função. Abraço!
CurtirCurtir
Nossa, bem interessante. Vlw pela dica!
CurtirCurtir
porque não funciona em abas diferentes? p. ex, a planilha com os dados está na plan1 e a busca é na plan2?
CurtirCurtir
Eu fiz aqui, e no meu funcionou em abas diferentes. Dá uma revisada na sua fórmula.
Abçs!
CurtirCurtir
Muito bom!!! Me ajudou bastante
CurtirCurtir
É só usar o Procv e colocar o número 3 no lugar do “0” ou FALSO
CurtirCurtir
Olá Giovani! Obrigado por visitar meu blog e comentar o artigo.
Com relação a sua observação, não é correto dizer que o 3 no último argumento do PROCV irá trazer a última correspondência.
O último argumento do PROCV exige um elemento booleano, que nada mais é do que o VERDADEIRO ou FALSO, ou 1 e 0 respectivamente. O que ocorre nestes tipos de argumento é que qualquer número diferente de 0, é interpretado como VERDADEIRO. Aqui caberia a discussão se seria correto a Microsoft manter essa lógica ou não, mas não vem ao caso agora.
Assim, o 3 é interpretado como argumento VERDADEIRO no último argumento que define o tipo de busca, se exata ou aproximada. Assim, o que ocorre é que o PROCV retornará o 2º resultado da busca, que não necessariamente será o último, portanto não é correto dizer que colocando o 3 no último argumento do PROCV, vai fazer com que a função faça a busca de baixo para cima retornando o último resultado. Faça o teste com 3 códigos na coluna de busca para entender melhor este cenário.
Abraços!
CurtirCurtir
Seria legal se a Microsoft adicionasse mais um argumento (optcional) na fórmula, permitindo que o usuário escolhesse a ordem ou a posição do resultado (primeiro, último ou o 3º … etc)
Evitaria uma série de fórmulas precisamos desenvolver só para uma coisa que praticamente já existe.
Abçs!
CurtirCurtir
Sabe me dizer se esta função não funciona no google docs? tentei fazer no excel de lá, mas não funcionou…
CurtirCurtir
No Google Docs funciona, só precisa segurar o Shift+Ctrl quando for apertar o Enter.
Outra forma é colocar ArrayFormula no início, assim: =ArrayFormula(Proc(2;1/(B5:B16=G6);D5:D16))
CurtirCurtir
Mesmo fazendo isso, minha fórmula não funcionou. (Observação: estou usando dados de procura pela fórmula “importrange”), será que é por isso?
CurtirCurtir
Ops! Funcionou sim, troquei o I pelo 1 e deu tudo certo. Muito obrigada!
CurtirCurtir
Rapaz, pensa numa vida que você salvou!!! Obrigado mesmo!!!
CurtirCurtir
rafaelissamu, funciona quando se busca uma coluna inteira (A:A e B:B)? Tentei aqui em casa e deu o erro #NÚM! Saberia me dizer por quê? Obrigado!
CurtirCurtir
(aproveitando o embalo…) Por que não funciona se o valor procurado é 0?
CurtirCurtir
como faço para realizar uma formula utilizando “hora” e “dia”?
CurtirCurtir
Muito Bom! foi muito útil!
CurtirCurtir
Excelente dica!! Me ajudou muito!!
CurtirCurtir
muito bom!!!!… mas e se eu quiser que a fórmula ignore valores =0?… pois se não tiver valor algum na célula, retorna o valor de zero… quero que retorne o último valor diferente de zero.
CurtirCurtir
Ótima explicação. Obrigado
CurtirCurtir
Ótima dica.
Gostaria de fazer uma observação, modificar o padrão de fontes do site, pois o número 1 parece muito com a letra I, o que pode gerar uma certa confusão ao ler.
CurtirCurtir
Concordo com o colega David Sylvestre! O número é MUITO parecido com a letra, atrapalhando a leitura!
CurtirCurtir
Olá, gostaria de saber como uso a função PROC com um valor aproximado (similiar a opção verdadeiro/falso da função PROCV).
Desde já obrigado
CurtirCurtir
SENSACIONAL!!!! Parabéns! Estava buscando isso mesmo.
CurtirCurtir
Fantástico, obrigado pela ajuda.
Para buscar na ordem conforme colocou no final da explicação já tem publicado? Procurei e não achei
CurtirCurtir
Este post resolveu um grande problema. Obrigado!!
CurtirCurtir
Sensacional! Muito obrigado!!!
CurtirCurtir
Muito obrigado amigo, sua fórmula vai me ajudar muito.
CurtirCurtir
Sensacional!!! Formula ajudou muito!!! Parabéns pelo Blog!!!! Sucesso!!! Obrigado por compartilhar!!!
CurtirCurtir
Como ficaria esta formula para obter cor de duas colunas Rafael e 31
CurtirCurtir
Atendeu o que eu procurava. Ajudou muito! Obrigado por compartilhar seu conhecimento.
CurtirCurtir