Supondo que você deseja corresponder 5
, 6
ou 7
e encontrar a primeira linha correspondente para qualquer um deles, use esta fórmula
=IF(IFERROR(INDEX($H$2:INDIRECT("H"&ROW()-1),AGGREGATE(15,6,MATCH({5,6,7},$D$2:INDIRECT("D"&ROW()-1),0),1)),0)=99,2,1)*INDIRECT("F"&ROW())
A função
AGGREGATE
existe apenas no Excel 2010 ou em versões posteriores
Isso funciona porque a parte MATCH
agora retorna um "array" de 3 valores - um para cada 5, 6 e 7 - a posição numérica no intervalo ou #N/A
se eles não existirem no intervalo range, então match pode retornar esse resultado
{#N/A,4,11}
Isso significa que 5 não foi encontrado, 6 é encontrado na 4ª linha do intervalo de pesquisa e 7 é encontrado na 11ª linha.
A função AGGREGATE
, portanto, é assim:
AGGREGATE(15,6,{#N/A,4,11},1)
onde 14 é o tipo de função para aplicar [ SMALL
], 6 significa ignorar erros e o 1 no final define o valor k para SMALL
, então basicamente ele pega o menor valor de {#N/A,4,11}
enquanto ignora os erros, então, neste caso, ele retorna 4, o que corresponde à primeira correspondência para 5, 6 ou 7