Table des matières
Le tutoriel explique comment rendre Excel VLOOKUP sensible à la casse, présente quelques autres formules qui distinguent la casse du texte, et souligne les points forts et les limites de chaque fonction.
Je suppose que tous les utilisateurs d'Excel savent quelle fonction permet d'effectuer une recherche verticale dans Excel. C'est vrai, il s'agit de VLOOKUP. Cependant, très peu de personnes savent que la fonction VLOOKUP d'Excel est insensible à la casse, ce qui signifie qu'elle traite les lettres minuscules et majuscules comme les mêmes caractères.
Voici un exemple rapide qui démontre l'incapacité de VLOOKUP à faire la distinction entre les majuscules et les minuscules. Supposons que vous ayez "bill" dans la cellule A2 et "Bill" dans la cellule A4. La formule ci-dessous détectera "bill" parce qu'il vient en premier dans le tableau de recherche et renverra une valeur correspondante de B2.
=VLOOKUP("Bill", A2:B4, 2, FALSE)
Plus loin dans cet article, je vous montrerai une façon de rendre VLOOKUP sensible à la casse. Nous explorerons également quelques autres fonctions qui peuvent faire une correspondance sensible à la casse dans Excel.
Formule VLOOKUP sensible à la casse
Comme mentionné ci-dessus, une formule VLOOKUP habituelle ne reconnaît pas la casse des lettres. Cependant, il existe un moyen de rendre Excel VLOOKUP sensible à la casse, comme le montre l'exemple ci-dessous.
Supposons que vous ayez ID des articles dans la colonne A et que vous voulez extraire le prix et le commentaire de l'article dans les colonnes B et C. Le problème est que les ID comprennent à la fois des minuscules et des majuscules. Par exemple, les valeurs dans A4 (001Tvci3u) et A5 (001Tvci3U) ne diffèrent que par le dernier caractère, "u" et "U", respectivement.
En cherchant "001Tvci3 U Une formule VLOOKUP standard produit 90 $ qui sont associés à "001Tvci3". u "car il vient avant "001Tvci3 U "Mais ce n'est pas ce que vous voulez, n'est-ce pas ?
=VLOOKUP(F2, A2:C7, 2, FALSE)
Pour effectuer une recherche sensible à la casse dans Excel, nous combinons les fonctions VLOOKUP, CHOOSE et EXACT :
VLOOKUP(TRUE, CHOOSE({1,2}, EXACT( valeur de la recherche , lookup_array ), return_array ), 2, 0)Cette formule générique fonctionne parfaitement dans toutes les situations. Vous pouvez même rechercher de droite à gauche Félicitations à Pouriya pour avoir suggéré cette solution simple et élégante !
Dans notre cas, les formules réelles sont les suivantes.
Pour tirer le prix dans F3 :
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), B2:B7), 2, FALSE)
Pour récupérer le commentaire F4 :
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7), 2, FALSE)
Remarque : dans toutes les versions d'Excel autres qu'Excel 365, cette formule fonctionne uniquement comme une formule de tableau, n'oubliez pas d'appuyer sur Ctrl + Shift + Enter pour la compléter correctement. Dans Excel 365, en raison de la prise en charge des tableaux dynamiques, elle fonctionne également comme une formule ordinaire.
Comment fonctionne cette formule :
La partie essentielle qui fait l'affaire est la formule CHOISIR avec EXACT imbriqué :
CHOISIR({1,2}, EXACT(F2, A2:A7), C2:C7)
Ici, la fonction EXACT compare la valeur de F2 à chaque valeur de A2:A7 et renvoie TRUE si elles sont exactement les mêmes, y compris la casse des lettres, FALSE sinon :
{FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}
Pour le index_num Comme résultat, la fonction combine les valeurs logiques du tableau ci-dessus et les valeurs de C2:C7 dans un tableau à deux dimensions comme ceci :
{FALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}
La fonction VLOOKUP prend le relais et recherche la valeur de recherche (qui est VRAIE) dans la première colonne du tableau à deux dimensions (représentée par les valeurs logiques) et renvoie une correspondance dans la deuxième colonne, qui est le prix que nous recherchons :
VLOOKUP(TRUE, {FALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}, 2, 0)
Formule XLOOKUP sensible à la casse
Les abonnés à Microsoft 365 peuvent effectuer une recherche sensible à la casse dans Excel avec une formule encore plus simple. Comme vous pouvez le deviner, je parle d'un successeur plus puissant de VLOOKUP - la fonction XLOOKUP.
Étant donné que XLOOKUP opère séparément sur les tableaux de consultation et de retour, nous n'avons pas besoin de l'astuce du tableau à deux dimensions de l'exemple précédent. Il suffit d'utiliser EXACT pour la fonction lookup_array argument :
XLOOKUP(TRUE, EXACT( valeur de la recherche , lookup_array ), return_array , "Not found")Le dernier argument ("Not found") est facultatif. Il définit simplement la valeur à retourner si aucune correspondance n'est trouvée. Si vous l'omettez, une erreur standard #N/A sera retournée si la formule ne trouve rien.
Pour notre exemple de table, voici les formules XLOOKUP sensibles à la casse à utiliser.
Pour obtenir le prix dans F3 :
=XLOOKUP(TRUE, EXACT(F2, A2:A7), B2:B7, "Non trouvé")
Pour extraire le commentaire F4 :
=XLOOKUP(TRUE, EXACT(F2, A2:A7), C2:C7, "Non trouvé")
Comment fonctionne cette formule :
Comme dans l'exemple précédent, EXACT renvoie un tableau de valeurs VRAI et FAUX, où VRAI représente des correspondances sensibles à la casse. XLOOKUP recherche la valeur VRAI dans le tableau ci-dessus et renvoie une correspondance à partir de l'élément return_array Veuillez noter que si la colonne de recherche contient deux valeurs identiques ou plus (y compris la casse des lettres), la formule renverra la première correspondance trouvée.
Limitation XLOOKUP : disponible uniquement dans Excel 365 et Excel 2021.
SUMPRODUCT - recherche sensible à la casse pour retourner les numéros correspondants.
Comme vous le comprenez d'après le titre, SUMPRODUCT est encore une autre fonction Excel qui peut effectuer une recherche sensible à la casse, mais elle peut retourner valeurs numériques Si ce n'est pas votre cas, passez à l'exemple INDEX MATCH qui offre une solution pour tous les types de données.
Comme vous le savez probablement, la fonction SUMPRODUCT d'Excel multiplie les composants des tableaux spécifiés et renvoie la somme des produits. Comme nous voulons une recherche sensible à la casse, nous utilisons la fonction EXACT pour obtenir le premier tableau :
=SUMPRODUCT((EXACT(A2:A7,F2) * (B2:B7)))
Malheureusement, la fonction SUMPRODUCT ne peut pas renvoyer de correspondance de texte, car les valeurs de texte ne peuvent pas être multipliées. Dans ce cas, vous obtiendrez une erreur #VALUE ! comme dans la cellule F4 de la capture d'écran ci-dessous :
Comment fonctionne cette formule :
Comme dans l'exemple VLOOKUP, la fonction EXACT compare la valeur de F2 à toutes les valeurs de A2:A7 et renvoie VRAI pour les correspondances sensibles à la casse, FAUX sinon :
SUMPRODUCT(({FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}*{155;186;90;54;159;28})))
Dans la plupart des formules, Excel évalue VRAI à 1 et FAUX à 0. Ainsi, lorsque SUMPRODUCT multiplie les éléments des deux tableaux aux mêmes positions, toutes les non-correspondances (FAUX) deviennent des zéros :
SUMPRODUCT({0;0;0;54;0;0})
En conséquence, la formule renvoie un nombre de la colonne B qui correspond à la correspondance exacte de la casse dans la colonne A.
Limitation du SUMPRODUCT : ne peut renvoyer que des valeurs numériques.
INDEX MATCH - recherche sensible à la casse pour tous les types de données
Enfin, nous sommes sur le point d'obtenir une formule de recherche sensible à la casse sans limitation qui fonctionne dans toutes les versions d'Excel et sur tous les ensembles de données.
Cet exemple est le dernier, non seulement parce que le meilleur est gardé pour la fin, mais aussi parce que les connaissances acquises dans les exemples précédents peuvent vous aider à mieux comprendre la formule MATCH INDEX sensible à la casse.
La combinaison des fonctions INDEX et MATCH est souvent utilisée dans Excel comme une alternative plus flexible et polyvalente au VLOOKUP. L'article suivant explique bien (du moins je l'espère :) comment ces deux fonctions fonctionnent ensemble - Using INDEX MATCH instead of VLOOKUP.
Je me contenterai ici de vous rappeler les points essentiels :
- La fonction MATCH recherche la valeur de référence dans le tableau de référence spécifié et renvoie sa position relative.
- La position relative de la valeur de consultation est directement indiquée dans le champ numéro de rang de la fonction INDEX en lui demandant de retourner une valeur de cette ligne.
Pour que la formule reconnaisse la casse du texte, il suffit d'ajouter une fonction supplémentaire à la combinaison classique INDEX MATCH. Évidemment, vous avez à nouveau besoin de la fonction EXACT :
La vraie formule dans F3 est :
=INDEX(B2:B7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Dans F4, nous utilisons celui-ci :
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
N'oubliez pas qu'elle ne fonctionne comme formule de tableau que dans toutes les versions autres qu'Excel 365. Veillez donc à la saisir en appuyant simultanément sur les touches Ctrl + Shift + Enter. Si vous procédez correctement, la formule sera entourée d'accolades comme indiqué dans la capture d'écran ci-dessous :
Comment fonctionne cette formule :
Comme dans tous les exemples précédents, EXACT renvoie VRAI pour chaque valeur de A2:A7 qui correspond exactement à la valeur de F2. Étant donné que nous utilisons VRAI pour le paramètre valeur de la recherche de MATCH, il renvoie une position relative de la correspondance exacte sensible à la casse, ce qui est précisément ce dont INDEX a besoin pour renvoyer une correspondance de B2:B7.
Formule avancée de recherche sensible à la casse
La formule INDEX MATCH mentionnée ci-dessus semble parfaite, n'est-ce pas ? Mais en fait, elle ne l'est pas. Laissez-moi vous montrer pourquoi.
Supposons qu'une cellule de la colonne de retour correspondant à la valeur de recherche soit vide. Que doit renvoyer la formule ? Rien. Voyons maintenant ce qu'elle renvoie réellement :
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Oups, la formule renvoie un zéro ! Peut-être que ce n'est pas vraiment important lorsque l'on traite uniquement des valeurs textuelles. Cependant, si votre feuille de calcul contient des chiffres et que certains d'entre eux sont de vrais zéros, cela pose un problème.
En réalité, toutes les autres formules de consultation évoquées précédemment se comportent de la même manière. Mais maintenant, vous voulez une formule impeccable, n'est-ce pas ?
Pour que la formule INDEX MATCH sensible à la casse soit absolument parfaite, vous l'intégrez à la fonction IF qui vérifie si une cellule de retour est vide et ne renvoie rien dans ce cas :
=IF(INDIRECT("C"& ;(1+MATCH(TRUE,EXACT(A2:A7, F2), 0)))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), "")
Dans la formule ci-dessus :
- "C" est la colonne de retour.
- "1" est le nombre qui transforme un position relative de la cellule renvoyée par la fonction MATCH dans un fichier l'adresse réelle de la cellule .
Par exemple, le tableau de consultation de notre fonction MATCH est A2:A7, ce qui signifie que la position relative de la cellule A2 est "1", car il s'agit de la première cellule du tableau. Mais en réalité, le tableau de consultation commence à la ligne 2. Pour compenser la différence, nous ajoutons 1, afin que la fonction INDIRECT renvoie une valeur provenant de la bonne cellule.
Les captures d'écran ci-dessous montrent la formule améliorée de l'INDEX MATCH sensible à la casse en action.
Si la cellule de retour est vide, la formule ne produit rien (une chaîne vide) :
Si la cellule de retour contient un zéro, la formule renvoie 0 :
Si vous préférez afficher un message lorsqu'une cellule de retour est vide, remplacez une chaîne vide ("") dans le dernier argument de IF par un texte :
=IF(INDIRECT("C"& ;(1+MATCH(TRUE, EXACT(A2:A7, F2), 0)))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), "Il n'y a rien à retourner, désolé.")
Faire un VLOOKUP sensible à la casse de manière simple
Les utilisateurs de notre suite logicielle Ultimate Suite pour Excel disposent d'un outil spécial qui facilite la recherche dans des tableaux complexes et de grande taille, et ce sans aucun stress.
Supposons que vous souhaitiez extraire Qty. de la base de données des Consulter le site à la table Principal sur la base des ID uniques des éléments :
Ce que vous devez faire, c'est exécuter l'assistant Fusionner les tables et effectuer les étapes suivantes :
- Sélectionnez la table principale dans laquelle vous souhaitez extraire les nouvelles données.
- Sélectionnez la table de consultation où chercher les nouvelles données.
- Choisissez une ou plusieurs colonnes clés (l'ID de l'article dans notre cas) et assurez-vous de cocher l'onglet Correspondance sensible à la casse boîte.
Un instant plus tard, vous obtiendrez le résultat souhaité :)
Voilà comment effectuer une recherche dans Excel en tenant compte de la casse du texte. Je vous remercie de votre lecture et j'espère vous voir sur notre blog la semaine prochaine !
Cahier d'exercices à télécharger
Exemples de VLOOKUP sensibles à la casse (fichier .xlsx)