=PROCV(F2;A2:D6;3;FALSO) procura o valor de F2 na primeira coluna de A2:D6 e retorna o valor da terceira coluna da mesma linha. O FALSO no fim significa "só correspondência exata". Escolha outro produto em F2 e o preço muda. O PROCV se chama VLOOKUP em inglês, e a tabela mostra a fórmula assim: =VLOOKUP(F2,A2:D6,3,FALSE). Você também pode digitar as fórmulas em português na tabela, com ponto e vírgula.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Stock | Look for | Price | |
| 2 | Apple | Fruit | $1.20 | 40 | Pear | $1.50 | |
| 3 | Pear | Fruit | $1.50 | 25 | |||
| 4 | Carrot | Vegetable | $0.80 | 60 | |||
| 5 | Bread | Bakery | $2.40 | 15 | |||
| 6 | Milk | Dairy | $1.10 | 30 |
=PROCV(F2;A2:D6;3;FALSO)Clique em G2 para ver a tabela A2:D6 contornada. Mude o 3 da fórmula para 2 e G2 retorna a categoria no lugar do preço, porque Category é a segunda coluna da tabela. A busca ignora maiúsculas: pear encontra Pear.
Sintaxe do PROCV
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
| Argumento | O que é | No exemplo |
|---|---|---|
lookup_value (valor_procurado) | O valor a encontrar. | F2 (Pear) |
table_array (matriz_tabela) | A tabela onde procurar. O PROCV procura só na primeira coluna dela. | A2:D6 |
col_index_num (núm_índice_coluna) | Qual coluna da tabela retornar, contando a partir da primeira coluna da tabela (1). | 3 (Price) |
range_lookup (procurar_intervalo) | FALSO ou 0 para correspondência exata. VERDADEIRO, 1 ou nada para correspondência aproximada. | FALSO |
O número da coluna conta a partir do começo da tabela, não da coluna A da planilha. Em uma tabela que começa na coluna C, col_index_num 2 significa a coluna D. Um número maior que a largura da tabela retorna #REF!, e 0 retorna #VALOR! (#VALUE! em inglês; a tabela mostra os nomes de erro em inglês).
No Excel em português, os argumentos são separados por ponto e vírgula: =PROCV(F2;A2:D6;3;FALSO).
Escolher a coluna de retorno com CORRESP
Um 3 fixo quebra em silêncio quando alguém insere uma coluna dentro da tabela: a fórmula continua retornando a terceira coluna, que agora tem outra coisa. Deixe a CORRESP (MATCH em inglês) achar o número da coluna a partir do cabeçalho. Aqui G1 é uma lista suspensa: escolha Stock ou Category e G2 acompanha.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Stock | Look for | Price | |
| 2 | Apple | Fruit | $1.20 | 40 | Carrot | 0.8 | |
| 3 | Pear | Fruit | $1.50 | 25 | |||
| 4 | Carrot | Vegetable | $0.80 | 60 | |||
| 5 | Bread | Bakery | $2.40 | 15 | |||
| 6 | Milk | Dairy | $1.10 | 30 |
=PROCV(F2;A2:D6;CORRESP(G1;A1:D1;0);FALSO)CORRESP(G1;A1:D1;0) retorna a posição de "Price" na linha de cabeçalho, 3, e o PROCV usa essa posição como número da coluna: 0.8 para Carrot. É uma busca em duas direções: uma linha escolhida pelo produto, uma coluna escolhida pelo cabeçalho. A mesma ideia escrita com ÍNDICE (INDEX em inglês) no lugar do PROCV está na página ÍNDICE e CORRESP.
Correspondência aproximada: PROCV com VERDADEIRO
Com VERDADEIRO como último argumento, o PROCV não procura um valor igual. Ele encontra o maior valor menor ou igual ao valor procurado. É o que você quer para faixas: faixas de imposto, notas, tabelas de frete, níveis de comissão. A primeira coluna precisa estar ordenada do menor para o maior.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Sales from | Rate | Rep | Sales | Rate | |
| 2 | 0 | 0% | Ana | 750 | 0% | |
| 3 | 1000 | 3% | Ben | 4,200 | 3% | |
| 4 | 5000 | 5% | Cara | 5,000 | 5% | |
| 5 | 10000 | 8% | Dev | 12,500 | 8% |
=PROCV(E2;$A$2:$B$5;2;VERDADEIRO)Os 4.200 de Ben não estão na coluna A. O maior valor que não passa disso é 1.000, então ele recebe 3%. Os 5.000 de Cara batem exatamente com a linha de 5.000 e ela recebe 5%. Os 12.500 de Dev passam da última faixa e ele recebe a última taxa, 8%. Um valor abaixo da primeira faixa (aqui, uma venda negativa) retorna #N/D, e é por isso que a tabela começa em 0.
Os $ em $A$2:$B$5 mantêm a tabela no lugar quando F2 é arrastada até F5. Sem eles, F3 procuraria em A3:B6 e pularia a primeira faixa.
Deixar o quarto argumento de fora é o mesmo que VERDADEIRO. Em uma lista de produtos fora de ordem, isso é um bug silencioso: o Excel procura como se a lista estivesse ordenada e pode retornar um preço da linha errada, ou #N/D para um valor que está lá. Quando você busca nomes, códigos ou IDs, termine sempre com FALSO.
Por que o PROCV retorna #N/D
#N/D (#N/A em inglês) significa "não encontrado". A tabela abaixo mostra três causas comuns, e a coluna G repete cada busca envolvida em SENÃODISP e ARRUMAR.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Stock | Look for | Price | Fixed |
| 2 | Apple | Fruit | $1.20 | 40 | Kiwi | #N/A | Not found |
| 3 | Pear | Fruit | $1.50 | 25 | Milk | #N/A | $1.10 |
| 4 | Carrot | Vegetable | $0.80 | 60 | Fruit | #N/A | Not found |
| 5 | Bread | Bakery | $2.40 | 15 | |||
| 6 | Milk | Dairy | $1.10 | 30 |
#N/A O valor procurado não está no intervalo de pesquisa.No Excel em português: =PROCV(E2;$A$2:$D$6;3;FALSO)- O valor não está na tabela. Kiwi não está em A2:A6. É um "não encontrado" de verdade, e
SENÃODISP(...;"Not found")transforma isso em um texto legível. Mude E2 para Apple e as duas colunas mostram o preço. - Espaços a mais. E3 tem
"Milk "com um espaço no fim, então não é igual aMilk.ARRUMAR(E3)(TRIM em inglês) tira o espaço e G3 encontra o preço. Se os espaços estiverem na tabela, limpe a coluna A com ARRUMAR uma vez em vez de em cada busca. - O valor está em outra coluna. Fruit existe, mas na coluna B. O PROCV só procura na primeira coluna da tabela, então E4 falha nas duas colunas. Comece a tabela pela coluna onde você procura, ou use a PROCX (XLOOKUP em inglês), que recebe a coluna de busca e a coluna de retorno separadas.
Use a SENÃODISP (IFNA em inglês) em vez da SEERRO (IFERROR) em volta de uma busca. A SENÃODISP só pega o #N/D, então um #REF! de um número de coluna errado continua aparecendo em vez de ficar escondido como "Not found".
Mais duas causas:
- Números armazenados como texto. Se a coluna A tem códigos de produto digitados como texto (comum depois de uma importação, com um triangulozinho verde no canto) e F2 tem o número 101,
=PROCV(F2;A2:B6;2;FALSO)retorna #N/D mesmo com 101 na lista. Converta um dos lados:=PROCV(F2&"";A2:B6;2;FALSO)procura o texto "101", e=PROCV(VALOR(F2);A2:B6;2;FALSO)procura um número quando F2 é o texto. - Correspondência aproximada em dados fora de ordem, descrita na seção acima.
PROCV retorna 0 em vez de vazio
Quando a célula em que o PROCV cai está vazia, o Excel mostra 0, não uma célula vazia. Um 0 numa coluna Stock passa a ser lido como "sem estoque" quando o estoque nunca foi preenchido. Acrescente &"" à fórmula, ou teste o tamanho do resultado:
=VLOOKUP(F2,A2:D6,4,FALSE)&""
=IF(LEN(VLOOKUP(F2,A2:D6,4,FALSE))=0,"",VLOOKUP(F2,A2:D6,4,FALSE))
No Excel em português: =PROCV(F2;A2:D6;4;FALSO)&"" e =SE(NÚM.CARACT(PROCV(F2;A2:D6;4;FALSO))=0;"";PROCV(F2;A2:D6;4;FALSO)). A primeira é mais curta, mas transforma todo número que retorna em texto, então uma SOMA depois pula esse valor. A segunda mantém os números como números.
PROCV de outra planilha
Escreva o nome da planilha e ! antes da tabela. Quando você monta a fórmula no Excel, clique na aba da outra planilha e selecione o intervalo: o Excel escreve Prices!A2:B6 para você. Aqui a aba Orders busca os preços na aba Prices.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Order | Product | Qty | Price | Total |
| 2 | 1001 | Pear | 3 | $1.50 | $4.50 |
| 3 | 1002 | Milk | 2 | $1.10 | $2.20 |
| 4 | 1003 | Apple | 5 | $1.20 | $6.00 |
| 5 | 1004 | Bread | 1 | $2.40 | $2.40 |
=PROCV(B2;Prices!$A$2:$B$6;2;FALSO)Abra a aba Prices e mude o preço de Apple: o total do pedido se atualiza. Dois detalhes:
- Um nome de planilha com espaços precisa de aspas simples:
=PROCV(B2;'Price list'!$A$2:$B$6;2;FALSO). - Uma tabela em outra pasta de trabalho acrescenta o nome do arquivo entre colchetes,
[Prices.xlsx]Prices!$A$2:$B$6. Quando esse arquivo está fechado, o Excel mostra o caminho completo dele na fórmula e a busca continua funcionando a partir do arquivo salvo.
PROCV com curingas (correspondência parcial)
Com FALSO, o valor procurado pode ter curingas: * vale por qualquer quantidade de caracteres e ? por exatamente um. "*"&E2&"*" encontra o primeiro produto cujo nome contém o texto de E2.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Contains | Price | |
| 2 | Green tea | Drinks | $3.20 | coffee | $2.90 | |
| 3 | Iced coffee | Drinks | $2.90 | |||
| 4 | Coffee beans | Pantry | $8.50 | |||
| 5 | Black tea | Drinks | $2.70 | |||
| 6 | Orange juice | Drinks | $3.40 |
=PROCV("*"&E2&"*";A2:C6;3;FALSO)"coffee" bate com Iced coffee e com Coffee beans; o PROCV retorna o primeiro de cima para baixo, $2.90. Mude E2 para bean para ter $8.50, ou para juice. Para procurar um asterisco ou um ponto de interrogação de verdade, coloque um til antes: "~*".
PROCV à esquerda
O PROCV não consegue retornar uma coluna à esquerda da coluna onde procura: col_index_num só conta para a direita, e números negativos dão erro. Para achar o produto de um preço, procure na coluna C e retorne a coluna A com a PROCX ou com ÍNDICE e CORRESP:
=XLOOKUP(2.4, C2:C6, A2:A6) Excel 2021 and Microsoft 365
=INDEX(A2:A6, MATCH(2.4, C2:C6, 0)) every version
No Excel em português: =PROCX(2,4;C2:C6;A2:A6) e =ÍNDICE(A2:A6;CORRESP(2,4;C2:C6;0)). As duas retornam Bread com os dados da primeira tabela. A PROCX tem a explicação completa.
Prática: frete por peso
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Weight from (kg) | Cost | Weight (kg) | Cost | |
| 2 | 0 | $4.50 | 7 | ||
| 3 | 2 | $6.00 | |||
| 4 | 5 | $9.50 | |||
| 5 | 10 | $14.00 | |||
| 6 | 20 | $22.00 |
Sua vez: Cada custo vale a partir do seu peso até o próximo peso da lista. Em E2, use o PROCV para retornar o custo de frete do peso do pacote em D2.
PROCV com dois critérios
O PROCV aceita um valor procurado. Para bater com duas colunas, crie uma coluna auxiliar que junta as duas, coloque essa coluna primeiro na tabela e procure o mesmo texto juntado. A coluna A abaixo é =B2&"-"&C2 arrastada para baixo, então ela tem Coffee-Small, Coffee-Large e assim por diante.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Key | Product | Size | Price | Product | Size | Price |
| 2 | Coffee-Small | Coffee | Small | $2.50 | Tea | Large | |
| 3 | Coffee-Large | Coffee | Large | $3.50 | |||
| 4 | Tea-Small | Tea | Small | $2.00 | |||
| 5 | Tea-Large | Tea | Large | $3.00 | |||
| 6 | Juice-Small | Juice | Small | $3.00 |
Sua vez: A coluna A junta o produto e o tamanho com um hífen. Em G2, retorne o preço do produto em E2 no tamanho em F2.
O separador faz diferença: "Tea"&"Large" dá TeaLarge, que não bate com nada na coluna A. No Excel 2021 e no Microsoft 365, você pode dispensar a coluna auxiliar com =PROCX(1;(B2:B6=E2)*(C2:C6=F2);D2:D6); busca com vários critérios mostra essa fórmula e a versão com ÍNDICE/CORRESP.
Perguntas frequentes
Como faço um PROCV no Excel?
Digite =PROCV( e passe quatro argumentos: o valor procurado, a tabela (a primeira coluna dela precisa ter esse valor), o número da coluna a retornar e FALSO para uma correspondência exata. =PROCV("Pear";A2:D6;3;FALSO) encontra Pear na coluna A e retorna o valor da coluna C dessa linha.
O que significa VERDADEIRO ou FALSO no fim do PROCV?
FALSO (ou 0) pede uma correspondência exata e retorna #N/D quando o valor não existe. VERDADEIRO (ou 1, ou deixar o argumento de fora) pede uma correspondência aproximada: o maior valor menor ou igual ao valor procurado, o que só funciona quando a primeira coluna está em ordem crescente.
Por que meu PROCV retorna #N/D?
O valor não foi encontrado na primeira coluna da tabela. As causas comuns são um erro de digitação, um espaço a mais ("Milk " não é "Milk"), um número armazenado como texto só de um lado, ou um valor que está em outra coluna. Envolva a fórmula na SENÃODISP para mostrar o seu próprio texto: =SENÃODISP(PROCV(F2;A2:D6;3;FALSO);"Not found").
O PROCV consegue buscar à esquerda?
Não. O PROCV só retorna colunas à direita da primeira coluna da tabela. Use =PROCX(F2;C2:C6;A2:A6) no Excel 2021 ou no Microsoft 365, ou =ÍNDICE(A2:A6;CORRESP(F2;C2:C6;0)) em qualquer versão.
Como faço um PROCV de outra planilha?
Coloque o nome da planilha e um ponto de exclamação antes do intervalo: =PROCV(B2;Prices!$A$2:$B$6;2;FALSO). Se o nome da planilha tiver um espaço, coloque o nome entre aspas simples: 'Price list'!$A$2:$B$6.