=PROCX(F2;A2:A6;C2:C6) procura o valor de F2 em A2:A6 e retorna o valor da mesma linha de C2:C6. Ela procura uma correspondência exata por padrão, a coluna de busca pode estar em qualquer lugar, e ela precisa do Excel 2021 ou do Microsoft 365 (no Excel 2019 e anteriores, use ÍNDICE e CORRESP). A PROCX se chama XLOOKUP em inglês, e a tabela mostra a fórmula assim: =XLOOKUP(F2,A2:A6,C2:C6). Você também pode digitar as fórmulas em português, com ponto e vírgula. Digite outro produto em F2.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Stock | Look for | Price | |
| 2 | Apple | Fruit | $1.20 | 40 | Bread | $2.40 | |
| 3 | Pear | Fruit | $1.50 | 25 | |||
| 4 | Carrot | Vegetable | $0.80 | 60 | |||
| 5 | Bread | Bakery | $2.40 | 15 | |||
| 6 | Milk | Dairy | $1.10 | 30 |
=PROCX(F2;A2:A6;C2:C6)Clique em G2: o intervalo de busca e o intervalo de retorno aparecem contornados separadamente. Mude C2:C6 para B2:B6 e G2 retorna a categoria. Não há número de coluna para contar, então inserir uma coluna entre A e C não quebra a fórmula: o Excel move os dois intervalos.
Sintaxe da PROCX
=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
| Argumento | O que faz | Padrão |
|---|---|---|
lookup_value | O valor a encontrar. | obrigatório |
lookup_array | A coluna (ou linha) onde procurar. | obrigatório |
return_array | A coluna, linha ou bloco de onde retornar. Mesma altura de lookup_array. | obrigatório |
if_not_found | O que mostrar quando nada bate. | #N/D |
match_mode | 0 exata, -1 exata ou o próximo menor, 1 exata ou o próximo maior, 2 curingas. | 0 |
search_mode | 1 do primeiro ao último, -1 do último ao primeiro, 2 e -2 busca binária em dados ordenados. | 1 |
Só os três primeiros são obrigatórios. Para pular um argumento opcional e definir um posterior, deixe o argumento vazio entre os separadores: =PROCX(F2;A2:A6;C2:C6;;0;-1) define o modo de pesquisa e deixa o se não encontrado no padrão.
Retornar várias colunas de uma vez
Passe à PROCX um intervalo de retorno com várias colunas de largura e a linha inteira volta. O resultado se espalha pelas células ao lado da fórmula.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Product | Category | Price | Stock |
| 2 | Apple | Fruit | $1.20 | 40 |
| 3 | Pear | Fruit | $1.50 | 25 |
| 4 | Carrot | Vegetable | $0.80 | 60 |
| 5 | Bread | Bakery | $2.40 | 15 |
| 6 | Milk | Dairy | $1.10 | 30 |
| 7 | Look for | Carrot | ||
| 8 | Result | Vegetable | $0.80 | 60 |
=PROCX(B7;A2:A6;B2:D6)Uma fórmula em B8 preenche B8:D8 com Vegetable, $0.80 e 60. Digite algo em C8 e B8 mostra #DESPEJAR! (#SPILL! em inglês, como a tabela mostra os erros), porque o resultado não tem espaço; apague e o resultado volta. Para retornar as colunas em outra ordem, envolva o intervalo de retorno em ESCOLHERCOLS (CHOOSECOLS em inglês): =PROCX(B7;A2:A6;ESCOLHERCOLS(B2:D6;3;1)) dá Stock e depois Category.
PROCX à esquerda, e uma mensagem quando nada bate
A coluna de busca não precisa vir primeiro. Aqui a PROCX procura os preços na coluna C e retorna o nome do produto da coluna A, o que o PROCV (VLOOKUP) não consegue fazer. O quarto argumento diz o que mostrar quando nenhum produto tem aquele preço.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Stock | Price | Product | |
| 2 | Apple | Fruit | $1.20 | 40 | $2.40 | Bread | |
| 3 | Pear | Fruit | $1.50 | 25 | |||
| 4 | Carrot | Vegetable | $0.80 | 60 | |||
| 5 | Bread | Bakery | $2.40 | 15 | |||
| 6 | Milk | Dairy | $1.10 | 30 |
=PROCX(F2;C2:C6;A2:A6;"No product")$2.40 retorna Bread. Mude F2 para 3 e G2 mostra "No product" em vez de #N/A. "" como quarto argumento mostra uma célula que parece vazia. O se não encontrado só cobre o "não encontrado": um intervalo de retorno com a altura errada continua dando #VALOR! (#VALUE!), que é o que você quer ver.
Encontrar a última ocorrência
A PROCX retorna a primeira ocorrência de cima para baixo. Defina o modo de pesquisa, o sexto argumento, como -1 e ela procura de baixo para cima, então retorna a última ocorrência: o pedido mais recente, o preço mais recente, o último status.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Date | Customer | Amount | Customer | First | Last | |
| 2 | 2026-03-02 | Ben | 120 | Ben | 120 | 60 | |
| 3 | 2026-03-05 | Ana | 80 | ||||
| 4 | 2026-03-09 | Ben | 45 | ||||
| 5 | 2026-03-12 | Cara | 200 | ||||
| 6 | 2026-03-20 | Ben | 60 | ||||
| 7 | 2026-03-24 | Ana | 95 |
=PROCX(E2;B2:B7;C2:C7;;0;-1)O primeiro pedido de Ben é 120 e o último é 60. Mude E2 para Ana: 80 e 95. Isso depende de as linhas estarem em ordem de data. Se não estiverem, procure a data mais recente do cliente: =PROCX(1;(B2:B7=E2)*(A2:A7=MÁXIMOSES(A2:A7;B2:B7;E2));C2:C7).
Correspondência aproximada: o próximo menor ou o próximo maior
O modo de correspondência -1 retorna uma correspondência exata ou, se não houver, o próximo valor menor. É a regra das faixas: um nível de comissão, uma faixa de imposto, uma nota. Diferente do PROCV com VERDADEIRO, a tabela não precisa estar ordenada. As faixas abaixo estão fora de ordem de propósito.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Sales from | Rate | Rep | Sales | Rate | |
| 2 | 5000 | 5% | Ana | 750 | 0% | |
| 3 | 0 | 0% | Ben | 4,200 | 3% | |
| 4 | 10000 | 8% | Cara | 5,000 | 5% | |
| 5 | 1000 | 3% | Dev | 12,500 | 8% |
=PROCX(E2;$A$2:$A$5;$B$2:$B$5;;-1)Os 4.200 de Ben caem entre 1.000 e 5.000, então ele recebe os 3% da faixa de 1.000. Os 5.000 de Cara são uma correspondência exata, 5%. O modo de correspondência 1 funciona ao contrário, exata ou o próximo maior, e responde "a menor caixa que serve" ou "o próximo horário de entrega": =XLOOKUP(18,{5;12;25;50},{"S";"M";"L";"XL"},,1) (forma em inglês) retorna L.
PROCX com curingas
O modo de correspondência 2 transforma * (quaisquer caracteres) e ? (um caractere) em curingas. Sem ele, a PROCX procura os próprios caracteres, o contrário do PROCV (cuja correspondência exata aceita curingas), e esse é o motivo comum de uma PROCX com curinga retornar #N/D ou o texto de se não encontrado:
=XLOOKUP("*coffee*",A2:A6,C2:C6,"None") None: no product is named *coffee*
=XLOOKUP("*coffee*",A2:A6,C2:C6,"None",2) 2.9, the price of Iced coffee
No Excel em português: =PROCX("*coffee*";A2:A6;C2:C6;"None";2).
| 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 |
=PROCX("*"&E2&"*";A2:A6;C2:C6;"None";2)"coffee" encontra primeiro Iced coffee, $2.90. Acrescente -1 como sexto argumento e ela encontra Coffee beans, $8.50. Como toda busca do Excel, a correspondência ignora maiúsculas. Para encontrar um asterisco ou um ponto de interrogação de verdade no modo 2, coloque um til antes: "~*".
PROCX em duas direções
Uma PROCX que retorna uma linha inteira pode ser o intervalo de retorno de uma segunda PROCX. A de dentro escolhe a linha pela região, a de fora escolhe a coluna do mês nessa linha.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Region | Jan | Feb | Mar |
| 2 | North | 4,200 | 3,900 | 4,800 |
| 3 | South | 3,100 | 3,600 | 3,300 |
| 4 | East | 5,200 | 4,700 | 5,600 |
| 5 | West | 2,800 | 3,000 | 3,400 |
| 6 | Region | South | ||
| 7 | Month | Feb | ||
| 8 | Sales | 3,600 |
=PROCX(B7;B1:D1;PROCX(B6;A2:A5;B2:D5))PROCX(B6;A2:A5;B2:D5) retorna a linha de South, 3100, 3600 e 3300. A PROCX de fora encontra Feb em B1:D1 e pega o valor correspondente dessa linha: 3,600. Escolha outra região e outro mês em B6 e B7. A versão com ÍNDICE e CORRESP da mesma busca está na página ÍNDICE e CORRESP.
PROCX no Excel antigo e no Google Planilhas
A PROCX existe no Excel 2021, no Excel 2024, no Microsoft 365, no Excel para a web e nos aplicativos móveis. Se você abrir um arquivo que a usa no Excel 2019 ou anterior, as fórmulas mostram #NOME? assim que recalculam. Quando um arquivo precisa funcionar em qualquer lugar, escreva a busca com ÍNDICE e CORRESP (INDEX e MATCH em inglês), que todas as versões entendem:
=XLOOKUP(F2, A2:A6, C2:C6, "Not found")
=IFNA(INDEX(C2:C6, MATCH(F2, A2:A6, 0)), "Not found")
No Excel em português: =PROCX(F2;A2:A6;C2:C6;"Not found") e =SENÃODISP(ÍNDICE(C2:C6;CORRESP(F2;A2:A6;0));"Not found").
O Google Planilhas tem a PROCX desde 2022, com os mesmos argumentos. Para ver as diferenças lado a lado, veja PROCV ou PROCX. Para bater com duas colunas de uma vez (produto e tamanho, nome e data), o padrão =PROCX(1;(B2:B6=E2)*(C2:C6=F2);D2:D6) está explicado na página busca com vários critérios.
Prática: um preço, ou "Not found"
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Stock | Look for | Price | |
| 2 | Apple | Fruit | $1.20 | 40 | Kiwi | ||
| 3 | Pear | Fruit | $1.50 | 25 | |||
| 4 | Carrot | Vegetable | $0.80 | 60 | |||
| 5 | Bread | Bakery | $2.40 | 15 | |||
| 6 | Milk | Dairy | $1.10 | 30 |
Sua vez: Em G2, retorne o preço do produto em F2, ou o texto Not found quando ele não estiver na lista.
Prática: desconto pelo tamanho do pedido
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Order from | Discount | Order | Discount | |
| 2 | $0 | 0% | $320 | ||
| 3 | $100 | 5% | |||
| 4 | $250 | 10% | |||
| 5 | $500 | 15% |
Sua vez: Cada desconto vale a partir do seu valor de pedido para cima. Em E2, use a PROCX para retornar o desconto do valor do pedido em D2.
Perguntas frequentes
Como uso a PROCX no Excel?
Passe três argumentos: o que encontrar, a coluna onde procurar e a coluna a retornar. =PROCX("Pear";A2:A6;C2:C6) encontra Pear em A2:A6 e retorna o valor da mesma linha de C2:C6. Ela procura uma correspondência exata, a não ser que você diga outra coisa.
Quais versões do Excel têm a PROCX?
Excel 2021, Excel 2024, Microsoft 365 e Excel para a web. No Excel 2019 e anteriores, a fórmula mostra #NOME?; nessas versões, use =ÍNDICE(C2:C6;CORRESP(F2;A2:A6;0)). O Google Planilhas também tem a PROCX.
Como faço a PROCX retornar vazio ou um texto em vez de #N/D?
Use o quarto argumento, se não encontrado: =PROCX(F2;A2:A6;C2:C6;"Not found"), ou "" para uma célula que parece vazia. Ele só troca o caso de não encontrado; os outros erros continuam aparecendo.
Como encontro a última ocorrência com a PROCX?
Defina o sexto argumento, o modo de pesquisa, como -1, para a busca correr de baixo para cima: =PROCX("Ben";B2:B7;C2:C7;;0;-1) retorna o último valor de Ben em vez do primeiro.
A PROCX pode retornar mais de uma coluna?
Pode. Passe um intervalo de retorno com várias colunas de largura, como =PROCX(F2;A2:A6;B2:D6), e o resultado se espalha pelas células ao lado. As células em que ele se espalha precisam estar vazias, senão o Excel mostra #DESPEJAR!.