Formule Excel: recherche de correspondance exacte avec INDEX et MATCH -

Table des matières

Formule générique

(=INDEX(data,MATCH(TRUE,EXACT(val,lookup_col),0),col_num))

Sommaire

Recherche sensible à la casse

Par défaut, les recherches standard avec VLOOKUP ou INDEX + MATCH ne sont pas sensibles à la casse. VLOOKUP et MATCH renverront simplement la première correspondance, en ignorant la casse.

Toutefois, si vous devez effectuer une recherche sensible à la casse, vous pouvez le faire avec une formule matricielle qui utilise INDEX, MATCH et la fonction EXACT.

Dans l'exemple, nous utilisons la formule suivante

(=INDEX(data,MATCH(TRUE,EXACT(F4,B3:B102),0),3))

Cette formule est une formule matricielle et doit être saisie avec Ctrl + Maj + Entrée.

Explication

Puisque MATCH seul n'est pas sensible à la casse, nous avons besoin d'un moyen d'obtenir Excel pour comparer la casse. La fonction EXACT est la fonction parfaite pour cela, mais la façon dont nous l'utilisons est un peu inhabituelle, car nous devons comparer une cellule à une plage de cellules.

En travaillant de l'intérieur vers l'extérieur, nous avons d'abord:

EXACT(F4,B3:B102)

où F4 contient la valeur de recherche et B3: B102 est une référence à la colonne de recherche (prénoms). Parce que nous donnons un tableau EXACT comme deuxième argument, nous allons récupérer un tableau de valeurs TRUE false comme ceci:

(FAUX, FAUX, FAUX, FAUX, FAUX, VRAI, etc.)

C'est le résultat de la comparaison de la valeur de B4 à chaque cellule de la colonne de recherche. Partout où nous voyons TRUE, nous savons que nous avons une correspondance exacte qui respecte la casse.

Nous devons maintenant obtenir la position (c'est-à-dire le numéro de ligne) de la valeur TRUE dans ce tableau. Pour cela, nous pouvons utiliser MATCH, à la recherche de TRUE et définir en mode de correspondance exacte:

MATCH(TRUE,EXACT(F4,B3:B102),0)

Il est important de noter que MATCH renverra toujours la première correspondance s'il y a des doublons, donc s'il y a une autre correspondance exacte dans la colonne, vous ne correspondrez qu'à la première.

Maintenant, nous avons un numéro de ligne. Ensuite, nous devons simplement utiliser INDEX pour récupérer la valeur à l'intersection droite de la ligne et de la colonne. Le numéro de colonne dans ce cas est codé en dur comme 3, car les données de la plage nommée incluent toutes les colonnes. La formule finale est:

(=INDEX(data,MATCH(TRUE,EXACT(F4,B3:B102),0),3))

Nous devons entrer cette formule sous forme de formule matricielle à cause du tableau créé par EXACT.

Cette formule récupère le texte et les valeurs numériques. Si vous souhaitez récupérer uniquement des nombres, vous pouvez utiliser une formule basée sur SUMPRODUCT; voir le lien ci-dessous

Articles intéressants...