
Formule générique
=XLOOKUP(1,(rng1="red")*(rng2>100),results)
Sommaire
Pour utiliser XLOOKUP avec plusieurs logiques, créez des expressions avec une logique booléenne, puis recherchez le numéro 1. Dans l'exemple, XLOOKUP est utilisé pour rechercher la première vente à Chicago de plus de 250 $. La formule dans G6 est:
=XLOOKUP(1,(D5:D14="chicago")*(E5:E14>250),B5:B14)
qui renvoie 0347, le numéro d'ordre du premier enregistrement qui répond aux critères fournis.
Remarque XLOOKUP n'est pas sensible à la casse.
Explication
XLOOKUP peut gérer les tableaux de manière native, ce qui en fait une fonction très utile lors de la construction de critères basés sur plusieurs expressions logiques.
Dans l'exemple présenté, nous recherchons le numéro de commande de la première commande à Chicago de plus de 250 $. Nous construisons un tableau de recherche à l'aide de l'expression et de la logique booléenne suivantes:
(D5:D14="chicago")*(E5:E14>250)
Lorsque cette expression est évaluée, nous obtenons d'abord deux tableaux de valeurs TRUE FALSE comme ceci:
(FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE)* (FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE)
Lorsque les deux tableaux sont multipliés l'un par l'autre, l'opération mathématique aboutit à un seul tableau de 1 et de 0 comme ceci:
(0;0;0;0;0;0;0;1;0;0)
Nous avons maintenant la formule suivante, et vous pouvez voir pourquoi nous utilisons 1 pour la valeur de recherche:
=XLOOKUP(1,(0;0;0;0;0;0;0;1;0;0),B5:B14)
XLOOKUP correspond au 1 en 8ème position et renvoie la 8ème valeur correspondante de B5: B14, qui est 0347.
Avec un seul critère
Comme vu ci-dessus, les opérations mathématiques contraignent automatiquement les valeurs TRUE et FALSE à 1 et 0. Par conséquent, lorsque vous utilisez plusieurs expressions, une valeur de recherche de 1 a du sens. Dans les cas où vous n'avez qu'un seul critère, par exemple "montant> 250", vous pouvez rechercher VRAI à la place comme suit:
=XLOOKUP(TRUE,E5:E14>250,B5:B14)
Vous pouvez également forcer les valeurs TRUE FALSE à 1 et 0, et utiliser 1 comme ceci.
=XLOOKUP(1,--(E5:E14>250),B5:B14)