=PROCX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7) retorna o preço da linha em que o produto é E2 e o tamanho é F2. Cada comparação verifica todas as linhas, multiplicar as duas dá 1 só onde as duas são verdadeiras, e a PROCX procura esse 1. Ela precisa do Excel 2021 ou do Microsoft 365; a versão com ÍNDICE e CORRESP abaixo funciona em qualquer versão. A PROCX se chama XLOOKUP em inglês, e a tabela mostra a fórmula assim: =XLOOKUP(1,(A2:A7=E2)*(B2:B7=F2),C2:C7). Você também pode digitar as fórmulas em português, com ponto e vírgula.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Size | Price | Product | Size | Price | |
| 2 | Coffee | Small | $2.50 | Tea | Large | $3.00 | |
| 3 | Coffee | Large | $3.50 | ||||
| 4 | Tea | Small | $2.00 | ||||
| 5 | Tea | Large | $3.00 | ||||
| 6 | Juice | Small | $3.00 | ||||
| 7 | Juice | Large | $4.00 |
=PROCX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7)Tea e Large se encontram na linha 5, então G2 retorna $3.00. Escolha Juice e Small: $3.00 de novo, de outra linha. Acrescente um quarto argumento para o caso em que nenhuma linha bate com os dois: =PROCX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7;"No such item").
Como as condições multiplicadas funcionam
A2:A7=E2 compara cada produto com E2 e retorna seis valores VERDADEIRO ou FALSO. Multiplicar duas listas assim transforma VERDADEIRO em 1 e FALSO em 0, e uma linha só dá 1 se for 1 nas duas. A coluna D mostra essa lista, espalhada a partir de uma fórmula.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Size | Price | Both match | Product | Size | |
| 2 | Coffee | Small | $2.50 | 0 | Tea | Large | |
| 3 | Coffee | Large | $3.50 | 0 | |||
| 4 | Tea | Small | $2.00 | 0 | |||
| 5 | Tea | Large | $3.00 | 1 | |||
| 6 | Juice | Small | $3.00 | 0 | |||
| 7 | Juice | Large | $4.00 | 0 |
=(A2:A7=F2)*(B2:B7=G2)Só D5 é 1. Mude F2 ou G2 e o 1 se move. Cada critério a mais é mais um *(intervalo=valor), e as condições não precisam ser de igualdade: *(C2:C7<3) acrescenta "preço abaixo de 3". Todos os intervalos precisam cobrir as mesmas linhas (A2:A7, B2:B7, C2:C7): se o intervalo de retorno tiver um tamanho diferente das condições, a PROCX retorna #VALOR! (#VALUE! em inglês; a tabela mostra os nomes de erro em inglês).
ÍNDICE e CORRESP com vários critérios
Para o Excel 2019 e anteriores, a CORRESP (MATCH) pode procurar o 1 na mesma matriz, e o ÍNDICE (INDEX) retorna o preço dessa posição.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Size | Price | Product | Size | Price | |
| 2 | Coffee | Small | $2.50 | Coffee | Large | $3.50 | |
| 3 | Coffee | Large | $3.50 | ||||
| 4 | Tea | Small | $2.00 | ||||
| 5 | Tea | Large | $3.00 | ||||
| 6 | Juice | Small | $3.00 | ||||
| 7 | Juice | Large | $4.00 |
=ÍNDICE(C2:C7;CORRESP(1;(A2:A7=E2)*(B2:B7=F2);0))Coffee e Large é a posição 2 da matriz, e o ÍNDICE retorna $3.50. Em português: =ÍNDICE(C2:C7;CORRESP(1;(A2:A7=E2)*(B2:B7=F2);0)). No Excel 2019 e anteriores, essa é uma fórmula de matriz: pressione Ctrl+Shift+Enter (Cmd+Shift+Enter no Mac) em vez de Enter, e o Excel mostra a fórmula entre chaves. Pressionar só Enter ali costuma retornar #N/D (#N/A) ou #VALOR!. No Excel 365, Enter basta. A forma com um critério só está na página ÍNDICE e CORRESP.
Juntar os critérios em uma chave
O outro jeito é transformar dois critérios em um, juntando os dois. O PROCV (VLOOKUP) precisa dos valores juntados em uma coluna auxiliar no começo da tabela (a página do PROCV mostra essa versão). A PROCX consegue juntar os intervalos dentro da fórmula, então não precisa de coluna auxiliar.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Size | Price | Product | Size | Price | |
| 2 | Coffee | Small | $2.50 | Juice | Large | $4.00 | |
| 3 | Coffee | Large | $3.50 | ||||
| 4 | Tea | Small | $2.00 | ||||
| 5 | Tea | Large | $3.00 | ||||
| 6 | Juice | Small | $3.00 | ||||
| 7 | Juice | Large | $4.00 |
=PROCX(E2&"|"&F2;A2:A7&"|"&B2:B7;C2:C7)A2:A7&"|"&B2:B7 monta seis chaves como Juice|Large, e a PROCX encontra Juice|Large entre elas: $4.00. Em português, a fórmula de G2 é =PROCX(E2&"|"&F2;A2:A7&"|"&B2:B7;C2:C7). Coloque um separador entre as partes. Sem ele, "AB" e "C" viram o mesmo "ABC" que "A" e "BC", e a busca pode retornar a linha errada.
Se o valor que você quer é um número e cada combinação aparece uma vez, a SOMASES (SUMIFS em inglês) dá a mesma resposta sem matriz nenhuma: =SOMASES(C2:C7;A2:A7;E2;B2:B7;F2). Ela retorna 0 em vez de um erro quando nada bate, o que pode esconder um erro de digitação.
Retornar todas as ocorrências com FILTRO
A PROCX e o ÍNDICE com CORRESP retornam a primeira linha que bate. Quando várias linhas batem e você quer todas, use a FILTRO (FILTER em inglês) com as mesmas condições.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Region | Product | Quarter | Sales | Matches | ||
| 2 | North | Laptop | Q1 | 120 | Q1 | 210 | |
| 3 | North | Phone | Q1 | 210 | Q2 | 225 | |
| 4 | South | Laptop | Q1 | 95 | Q3 | 240 | |
| 5 | North | Phone | Q2 | 225 | |||
| 6 | South | Phone | Q2 | 180 | |||
| 7 | North | Laptop | Q2 | 135 | |||
| 8 | North | Phone | Q3 | 240 |
=FILTRO(C2:D8;(A2:A8="North")*(B2:B8="Phone"))Três linhas são North e Phone, então F2 espalha os trimestres e as vendas delas por F2:G4. Mude A3 para South e a lista cai para duas. Se nenhuma linha bater, a FILTRO retorna #CALC!; um terceiro argumento como "None" mostra um texto no lugar. Mais opções estão na página da FILTRO.
Prática: três critérios
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Region | Product | Quarter | Sales | Region | South | |
| 2 | North | Laptop | Q1 | 120 | Product | Laptop | |
| 3 | North | Laptop | Q2 | 135 | Quarter | Q2 | |
| 4 | North | Phone | Q1 | 210 | Sales | ||
| 5 | South | Laptop | Q1 | 95 | |||
| 6 | South | Phone | Q2 | 180 | |||
| 7 | South | Laptop | Q2 | 110 | |||
| 8 | North | Phone | Q2 | 225 |
Sua vez: Retorne em G4 as vendas da região em G1, do produto em G2 e do trimestre em G3.
Perguntas frequentes
Como uso a PROCX com vários critérios?
Multiplique uma comparação por critério e procure o 1: =PROCX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7). Cada comparação dá VERDADEIRO ou FALSO por linha, o produto só é 1 onde todas são VERDADEIRO, e a PROCX retorna a primeira dessas linhas.
Como faço ÍNDICE e CORRESP com dois critérios?
Use as mesmas condições multiplicadas dentro da CORRESP: =ÍNDICE(C2:C7;CORRESP(1;(A2:A7=E2)*(B2:B7=F2);0)). No Excel 2019 e anteriores, confirme com Ctrl+Shift+Enter (Cmd+Shift+Enter no Mac).
O PROCV pode usar dois critérios?
Não diretamente. Acrescente uma coluna auxiliar no começo da tabela que junta os dois valores, como =A2&"|"&B2, e procure o valor juntado: =PROCV(E2&"|"&F2;tabela_auxiliar;coluna;FALSO).
A SOMASES pode substituir uma busca com dois critérios?
Pode, quando o valor é um número e cada combinação aparece uma vez: =SOMASES(C2:C7;A2:A7;E2;B2:B7;F2). Ela retorna 0 em vez de #N/D quando nenhuma linha bate, e soma os valores se uma combinação aparecer duas vezes.
Como faço uma busca com critérios OU?
Some as condições em vez de multiplicar: (A2:A7="Tea")+(A2:A7="Juice") é 1 ou mais onde uma das duas é verdadeira. Procure um valor maior que 0, por exemplo com =PROCX(VERDADEIRO;((A2:A7="Tea")+(A2:A7="Juice"))>0;C2:C7).