Formule Excel: XLOOKUP sensible à la casse -

Table des matières

Formule générique

=XLOOKUP(1,--EXACT(range1,"RED"),range2)

Sommaire

Pour créer une correspondance exacte sensible à la casse, vous pouvez utiliser la fonction XLOOKUP avec la fonction EXACT. Dans l'exemple illustré, la formule en F5 est:

=XLOOKUP(1,--EXACT(B5:B15,"RED"),B5:D15)

qui correspond à "RED" (sensible à la casse) et renvoie la ligne entière.

Explication

En elle-même, la fonction XLOOKUP n'est pas sensible à la casse. Une valeur de recherche de «RED» correspondra à «red», «RED» ou «Red». Nous pouvons contourner cette limitation en construisant un tableau de recherche approprié pour XLOOKUP avec une expression logique.

En travaillant de l'intérieur vers l'extérieur, pour donner à XLOOKUP la possibilité de faire correspondre la casse, nous utilisons la fonction EXACT comme ceci:

EXACT(B5:B15,"RED") // test for "RED"

Puisqu'il y a 11 valeurs dans la plage E5: D15, EXACT renvoie un tableau avec 11 résultats TRUE FALSE comme ceci:

(FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE)

Remarquez que la position de TRUE correspond à la ligne où la couleur est "RED".

Par souci de concision (et pour permettre à la logique d'être facilement étendue avec la logique booléenne), nous forçons les valeurs TRUE FALSE à 1s et 0s avec le double négatif:

--EXACT(B5:B15,"RED") // convert to 1s and 0s

ce qui donne un tableau comme celui-ci:

(0;0;0;0;1;0;0;0;0;0;0)

Notez que la position de 1 correspond à la ligne où la couleur est "ROUGE". Ce tableau est renvoyé directement à la fonction XLOOKUP comme argument de tableau de recherche.

Nous pouvons maintenant simplement la formule pour:

=XLOOKUP(1,(0;0;0;0;1;0;0;0;0;0;0),B5:D15)

Avec une valeur de recherche de 1, XLOOKUP trouve le 1 en 5ème position et renvoie la 5ème ligne dans le tableau de retour, B9: D9.

Étendre la logique

La structure de la logique peut être facilement étendue. Par exemple, pour limiter la correspondance à "ROUGE" au mois d'avril, vous pouvez utiliser une formule comme celle-ci:

=XLOOKUP(1,EXACT(B5:B15,"RED")*(MONTH(C5:C15)=4),B5:D15)

Ici, parce que chacune des deux expressions renvoie un tableau de valeurs TRUE FALSE, et parce que ces tableaux sont multipliés ensemble, l'opération mathématique contraint les valeurs TRUE et FALSE à 1 et 0. Il n'est pas nécessaire d'utiliser le double négatif.

Comme la valeur de recherche reste 1, comme dans la formule ci-dessus.

Premier et dernier match

Les deux formules ci-dessus renverront la première correspondance de "RED" dans un ensemble de données. Si vous avez besoin de la dernière correspondance, vous pouvez effectuer une recherche inversée en définissant l'argument du mode de recherche pour XLOOKUP sur -1:

=XLOOKUP(1,--EXACT(B5:B15,"RED"),B5:D15,,,-1) // last match

Si vous devez renvoyer les résultats de plusieurs correspondances, consultez la fonction FILTER.

Articles intéressants...