Table des matières
Ce tutoriel montre comment utiliser INDEX et MATCH dans Excel et en quoi ils sont meilleurs que VLOOKUP.
Dans quelques articles récents, nous nous sommes efforcés d'expliquer les bases de la fonction VLOOKUP aux débutants et de fournir des exemples de formules VLOOKUP plus complexes aux utilisateurs expérimentés. Aujourd'hui, je vais essayer, sinon de vous dissuader d'utiliser la fonction VLOOKUP, du moins de vous montrer une autre façon d'effectuer une recherche verticale dans Excel.
"Vous vous demandez peut-être à quoi cela peut bien servir. En effet, VLOOKUP présente de nombreuses limitations qui peuvent vous empêcher d'obtenir le résultat souhaité dans de nombreuses situations. En revanche, la combinaison INDEX MATCH est plus flexible et possède de nombreuses fonctionnalités impressionnantes qui la rendent supérieure à VLOOKUP à bien des égards.
Fonctions INDEX et MATCH d'Excel - les bases
Comme l'objectif de ce tutoriel est de démontrer une autre façon d'effectuer un vlookup dans Excel en utilisant une combinaison des fonctions INDEX et MATCH, nous ne nous attarderons pas sur leur syntaxe et leur utilisation. Nous ne couvrirons que le minimum nécessaire à la compréhension de l'idée générale, puis nous examinerons en profondeur des exemples de formules qui révèlent tous les avantages de l'utilisation de INDEX MATCH au lieu de VLOOKUP.
Fonction INDEX - syntaxe et utilisation
La fonction INDEX d'Excel renvoie une valeur dans un tableau en fonction des numéros de ligne et de colonne que vous spécifiez. La syntaxe de la fonction INDEX est simple :
INDEX(tableau, numéro_ligne, [numéro_colonne])Voici une explication très simple de chaque paramètre :
- tableau - une plage de cellules dont vous voulez retourner une valeur.
- numéro de rang - le numéro de ligne du tableau à partir duquel vous voulez retourner une valeur. Si omis, le numéro de colonne est requis.
- numéro de colonne - le numéro de la colonne dans le tableau à partir duquel vous voulez retourner une valeur. Si omis, row_num est requis.
Pour plus d'informations, veuillez consulter la fonction INDEX d'Excel.
Et voici un exemple de la formule INDEX dans sa forme la plus simple :
=INDEX(A1:C10,2,3)
La formule effectue une recherche dans les cellules A1 à C10 et renvoie une valeur de la cellule de la 2e ligne et de la 3e colonne, c'est-à-dire la cellule C2.
Cependant, lorsque vous travaillez avec des données réelles, vous ne savez pratiquement jamais quelle ligne et quelle colonne vous voulez, c'est là que la fonction MATCH est utile.
Fonction MATCH - syntaxe et utilisation
La fonction MATCH d'Excel recherche une valeur de référence dans une plage de cellules et renvoie le résultat de la recherche. position relative de cette valeur dans l'intervalle.
La syntaxe de la fonction MATCH est la suivante :
MATCH(lookup_value, lookup_array, [match_type])- valeur de la recherche - le nombre ou la valeur textuelle que vous recherchez.
- lookup_array - une plage de cellules faisant l'objet de la recherche.
- type de correspondance - spécifie s'il faut retourner une correspondance exacte ou la correspondance la plus proche :
- 1 ou omis - trouve la valeur la plus grande qui est inférieure ou égale à la valeur de la consultation, ce qui nécessite de trier le tableau de consultation dans l'ordre croissant.
- 0 - trouve la première valeur qui est exactement égale à la valeur de recherche. Dans la combinaison INDEX / MATCH, vous avez presque toujours besoin d'une correspondance exacte, donc vous définissez le troisième argument de votre fonction MATCH à 0.
- -1 - trouve la plus petite valeur supérieure ou égale à lookup_value, ce qui nécessite de trier le tableau de lookup par ordre décroissant.
Par exemple, si la plage B1:B3 contient les valeurs "New-York", "Paris", "Londres", la formule ci-dessous renvoie le nombre 3, car "Londres" est la troisième entrée de la plage :
=MATCH("Londres",B1:B3,0)
Pour plus d'informations, veuillez consulter la fonction MATCH d'Excel.
À première vue, l'utilité de la fonction MATCH peut sembler discutable. En effet, qui se soucie de la position d'une valeur dans une plage ? Ce que nous voulons savoir, c'est la valeur elle-même.
Je vous rappelle que la position relative de la valeur de consultation (c'est-à-dire les numéros de ligne et de colonne) est exactement ce que vous devez fournir à la fonction numéro de rang et numéro de colonne Comme vous vous en souvenez, la fonction INDEX d'Excel peut trouver la valeur à la jonction d'une ligne et d'une colonne données, mais elle ne peut pas déterminer exactement quelle ligne et quelle colonne vous voulez.
Comment utiliser la fonction INDEX MATCH dans Excel ?
Maintenant que vous connaissez les bases, je crois que vous avez déjà commencé à comprendre comment MATCH et INDEX fonctionnent ensemble. En bref, INDEX trouve la valeur de recherche par les numéros de colonne et de ligne, et MATCH fournit ces numéros. C'est tout !
Pour la consultation verticale, vous utilisez la fonction MATCH uniquement pour déterminer le numéro de ligne et fournir la plage de colonnes directement à INDEX :
INDEX ( pour retourner une valeur de , MATCH ( valeur de consultation , colonne à regarder en face , 0))Vous avez toujours des difficultés à comprendre ? Il est peut-être plus facile de comprendre à l'aide d'un exemple. Supposons que vous ayez une liste de capitales nationales et de leur population :
Pour trouver la population d'une certaine capitale, par exemple la capitale du Japon, utilisez la formule INDEX MATCH suivante :
=INDEX(C2:C10, MATCH("Japon", A2:A10, 0))
Analysons maintenant ce que fait réellement chaque composant de cette formule :
- La fonction MATCH recherche la valeur de référence "Japon" dans la plage A2:A10 et renvoie le nombre 3, car "Japon" est la troisième valeur du tableau de référence.
- Le numéro de la rangée va directement à la numéro de rang de INDEX lui demandant de retourner une valeur de cette ligne.
La formule ci-dessus se transforme donc en un simple INDEX(C2:C,3) qui indique qu'il faut rechercher dans les cellules C2 à C10 et extraire la valeur de la troisième cellule de cette plage, c'est-à-dire C4, car nous commençons à compter à partir de la deuxième ligne.
Si vous ne voulez pas coder en dur la ville dans la formule, saisissez-la dans une cellule, par exemple F1, puis fournissez la référence de la cellule à MATCH, et vous obtiendrez une formule de consultation dynamique :
=INDEX(C2:C10, MATCH(F1,A2:A10,0))
Remarque importante ! Le nombre de lignes dans le tableau de l'argument INDEX doit correspondre au nombre de lignes dans le fichier lookup_array de MATCH, sinon la formule produira un résultat incorrect.
Attendez, attendez... pourquoi ne pas simplement utiliser la formule Vlookup suivante ? A quoi bon perdre du temps à essayer de comprendre les arcanes du MATCH INDEX d'Excel ?
=VLOOKUP(F1, A2:C10, 3, FALSE)
Dans ce cas, ce n'est pas la peine :) Cet exemple simple n'a qu'un but démonstratif, afin que vous puissiez vous faire une idée de la façon dont les fonctions INDEX et MATCH fonctionnent ensemble. Les autres exemples qui suivent vous montreront la véritable puissance de cette combinaison qui permet de faire face facilement à de nombreux scénarios complexes lorsque VLOOKUP trébuche.
Conseils :
- Dans Excel 365 et Excel 2021, vous pouvez utiliser une formule INDEX XMATCH plus moderne.
- Pour Google Sheets, voir les exemples de formules avec INDEX MATCH dans cet article.
INDEX MATCH vs. VLOOKUP
Lorsqu'il s'agit de décider quelle fonction utiliser pour les recherches verticales, la plupart des gourous d'Excel s'accordent à dire que la formule INDEX MATCH est bien meilleure que VLOOKUP. Cependant, de nombreuses personnes continuent à utiliser VLOOKUP, d'une part parce qu'elle est plus simple et, d'autre part, parce qu'elles ne comprennent pas pleinement tous les avantages de l'utilisation de la formule INDEX MATCH dans Excel. Sans cette compréhension, personne n'est prêt à investir son temps pour apprendre une formule plus complexe.la syntaxe.
Ci-dessous, je vais souligner les principaux avantages de MATCH INDEX par rapport à VLOOKUP, et vous déciderez si c'est un ajout valable à votre arsenal Excel.
4 raisons principales d'utiliser INDEX MATCH au lieu de VLOOKUP
- Recherche de droite à gauche. Comme tout utilisateur averti le sait, VLOOKUP ne peut pas regarder à sa gauche, ce qui signifie que votre valeur de consultation doit toujours se trouver dans la colonne la plus à gauche du tableau. INDEX MATCH peut facilement effectuer une consultation à gauche ! L'exemple suivant le montre en action : Comment consulter une valeur à gauche dans Excel.
- Insérez ou supprimez des colonnes en toute sécurité. Les formules VLOOKUP ne fonctionnent pas ou fournissent des résultats incorrects lorsqu'une nouvelle colonne est supprimée ou ajoutée à une table de consultation, car la syntaxe de VLOOKUP nécessite de spécifier le numéro d'index de la colonne dont vous souhaitez extraire les données.
Avec INDEX MATCH, vous spécifiez la plage de colonnes de retour, et non un numéro d'index. Par conséquent, vous êtes libre d'insérer et de supprimer autant de colonnes que vous le souhaitez sans vous soucier de mettre à jour chaque formule associée.
- Aucune limite pour la taille d'une valeur de consultation. Lorsque vous utilisez la fonction VLOOKUP, la longueur totale de vos critères de recherche ne peut pas dépasser 255 caractères, sinon vous obtiendrez l'erreur #VALUE ! Donc, si votre ensemble de données contient de longues chaînes, INDEX MATCH est la seule solution qui fonctionne.
- Une vitesse de traitement plus élevée. Si vos tableaux sont relativement petits, il n'y aura guère de différence significative dans les performances d'Excel. Mais si vos feuilles de calcul contiennent des centaines ou des milliers de lignes, et par conséquent des centaines ou des milliers de formules, MATCH INDEX fonctionnera beaucoup plus rapidement que VLOOKUP parce qu'Excel ne devra traiter que les colonnes de recherche et de retour plutôt que le tableau entier de la table.
L'impact de VLOOKUP sur les performances d'Excel peut être particulièrement sensible si votre classeur contient des formules de tableau complexes telles que VLOOKUP et SUM. Le fait est que la vérification de chaque valeur du tableau nécessite un appel séparé de la fonction VLOOKUP. Ainsi, plus votre tableau contient de valeurs et plus vous avez de formules de tableau dans un classeur, plus Excel est lent.
Excel INDEX MATCH - exemples de formules
Connaissant les raisons d'apprendre la fonction MATCH INDEX, passons à la partie la plus intéressante et voyons comment vous pouvez appliquer les connaissances théoriques dans la pratique.
Formule INDEX MATCH pour regarder de droite à gauche.
Comme nous l'avons déjà mentionné, VLOOKUP ne peut pas regarder à sa gauche. Donc, à moins que vos valeurs de recherche ne se trouvent dans la colonne la plus à gauche, il n'y a aucune chance qu'une formule Vlookup vous apporte le résultat que vous souhaitez. La fonction INDEX MATCH d'Excel est plus polyvalente et ne se soucie pas vraiment de l'emplacement des colonnes de recherche et de retour.
Pour cet exemple, nous allons ajouter la colonne Rang à la gauche de notre tableau d'échantillons et tenter de déterminer le classement de la capitale russe, Moscou, en termes de population.
Avec la valeur de référence dans G1, utilisez la formule suivante pour effectuer une recherche dans C2:C10 et renvoyer une valeur correspondante dans A2:A10 :
=INDEX(A2:A10,MATCH(G1,C2:C10,0))
Conseil : si vous prévoyez d'utiliser votre formule INDEX MATCH pour plusieurs cellules, veillez à verrouiller les deux plages avec des références de cellule absolues (comme $A$2:$A$10 et $C$2:4C$10) afin qu'elles ne soient pas déformées lors de la copie de la formule.
INDEX MATCH MATCH pour rechercher dans les lignes et les colonnes
Dans les exemples ci-dessus, nous avons utilisé INDEX MATCH pour remplacer le VLOOKUP classique afin de renvoyer une valeur provenant d'une plage prédéfinie d'une colonne. Mais que se passe-t-il si vous devez effectuer une recherche dans plusieurs lignes et colonnes ? En d'autres termes, que se passe-t-il si vous souhaitez effectuer ce que l'on appelle la "méthode de l'indice" ? matrice ou bidirectionnel lookup ?
Cela peut sembler compliqué, mais la formule est très similaire à la fonction INDEX MATCH d'Excel, à une seule différence près. Devinez quoi ?
Il suffit d'utiliser deux fonctions MATCH - une pour obtenir un numéro de ligne et l'autre pour obtenir un numéro de colonne. Et je félicite ceux d'entre vous qui ont deviné juste :)
INDEX (tableau, MATCH ( valeur de vlookup , colonne à regarder en face , 0), MATCH ( Valeur de la consultation , rangée à regarder en face , 0))Et maintenant, jetez un coup d'œil au tableau ci-dessous et construisons une formule de correspondance INDEX MATCH pour trouver la population (en millions) d'un pays donné pour une année donnée.
Avec le pays cible dans G1 (valeur vlookup) et l'année cible dans G2 (valeur hlookup), la formule prend cette forme :
=INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))
Comment fonctionne cette formule
Lorsque vous devez comprendre une formule Excel complexe, décomposez-la en plusieurs parties et voyez ce que fait chaque fonction individuelle :
MATCH(G1,A2:A11,0)
- recherche dans A2:A11 la valeur de la cellule G1 ("Chine") et renvoie sa position, qui est 2.
MATCH(G2,B1:D1,0))
- recherche dans B1:D1 pour obtenir la position de la valeur dans la cellule G2 ("2015"), qui est 3.
Les numéros de ligne et de colonne ci-dessus correspondent aux arguments correspondants de la fonction INDEX :
INDEX(B2:D11, 2, 3)
Comme résultat, vous obtenez une valeur à l'intersection de la 2ème ligne et de la 3ème colonne dans la plage B2:D11, qui est la valeur dans la cellule D3. Facile ? Oui !
Excel INDEX MATCH pour rechercher des critères multiples
Si vous avez eu l'occasion de lire notre tutoriel Excel VLOOKUP, vous avez probablement déjà testé une formule de Vlookup avec plusieurs critères. Cependant, une limitation importante de cette approche est la nécessité d'ajouter une colonne d'aide. La bonne nouvelle est que la fonction INDEX MATCH d'Excel peut également effectuer des recherches avec deux critères ou plus, sans modifier ou restructurer vos données sources !
Voici la formule générique INDEX MATCH avec des critères multiples :
{=INDEX( retour_gamme , MATCH(1, ( critères1 = gamme1 ) * ( critères2 = gamme2 ), 0))}Remarque : il s'agit d'une formule de tableau qui doit être complétée à l'aide du raccourci Ctrl + Shift + Enter.
Dans l'exemple de tableau ci-dessous, supposons que vous vouliez trouver le montant sur la base de 2 critères, Client et Produit .
La formule INDEX MATCH suivante fonctionne à merveille :
=INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))
Où C2:C10 est la plage à renvoyer une valeur, F1 est le critère 1, A2:A10 est la plage à comparer au critère 1, F2 est le critère 2, et B2:B10 est la plage à comparer au critère 2.
N'oubliez pas d'entrer la formule correctement en appuyant sur Ctrl + Shift + Enter, et Excel la mettra automatiquement entre crochets comme le montre la capture d'écran :
Si vous préférez ne pas utiliser de formules de tableau dans vos feuilles de calcul, ajoutez une fonction INDEX supplémentaire à la formule et complétez-la avec la touche Entrée habituelle :
Comment fonctionnent ces formules
Les formules utilisent la même approche que la fonction INDEX MATCH de base qui examine une seule colonne. Pour évaluer plusieurs critères, vous créez deux tableaux ou plus de valeurs VRAI et FAUX qui représentent les correspondances et les non-correspondances pour chaque critère individuel, puis vous multipliez les éléments correspondants de ces tableaux. L'opération de multiplication convertit VRAI et FAUX en 1 et 0,La fonction MATCH avec une valeur de recherche de 1 trouve le premier "1" dans le tableau et transmet sa position à INDEX, qui renvoie une valeur dans cette ligne à partir de la colonne spécifiée.
La formule sans tableau s'appuie sur la capacité de la fonction INDEX à gérer les tableaux de manière native. Le deuxième INDEX est configuré avec 0 numéro de rang de façon à ce qu'il transmette le tableau de colonnes entier à MATCH.
Il s'agit d'une explication de haut niveau de la logique de la formule. Pour plus de détails, veuillez consulter Excel INDEX MATCH avec plusieurs critères.
Excel INDEX MATCH avec AVERAGE, MAX, MIN
Microsoft Excel dispose de fonctions spéciales permettant de trouver une valeur minimale, maximale et moyenne dans une plage. Mais que faire si vous avez besoin d'obtenir une valeur d'une autre cellule associée à ces valeurs ? Dans ce cas, utilisez la fonction MAX, MIN ou MOYENNE avec INDEX MATCH.
INDEX MATCH avec MAX
Pour trouver la plus grande valeur de la colonne D et retourner une valeur de la colonne C dans la même ligne, utilisez cette formule :
=INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))
INDEX MATCH avec MIN
Pour localiser la plus petite valeur dans la colonne D et extraire une valeur associée de la colonne C, utilisez celle-ci :
=INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))
MATCH INDEX avec MOYENNE
Pour calculer la valeur la plus proche de la moyenne dans D2:D10 et obtenir une valeur correspondante dans la colonne C, voici la formule à utiliser :
=INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))
Selon la façon dont vos données sont organisées, fournissez 1 ou -1 au troisième argument (match_type) de la fonction MATCH :
- Si votre colonne de consultation (colonne D dans notre cas) est triée ascendant la formule calculera la plus grande valeur qui est moins de ou égale à la valeur moyenne.
- Si votre colonne de consultation est triée descendant la formule calculera la plus petite valeur qui est plus que ou égale à la valeur moyenne.
- Si votre tableau de consultation contient une valeur exactement égal à la moyenne, vous pouvez entrer 0 pour une correspondance exacte. Aucun tri n'est nécessaire.
Dans notre exemple, les populations de la colonne D sont triées par ordre décroissant, nous utilisons donc -1 pour le type de correspondance. Comme résultat, nous obtenons "Tokyo" puisque sa population (13 189 000) est la correspondance la plus proche qui est supérieure à la moyenne (12 269 006).
Vous serez peut-être curieux de savoir que VLOOKUP peut également effectuer de tels calculs, mais sous forme de formule de tableau : VLOOKUP avec AVERAGE, MAX, MIN.
Utilisation de INDEX MATCH avec IFNA / IFERROR
Comme vous l'avez probablement remarqué, si une formule INDEX MATCH dans Excel ne trouve pas une valeur de référence, elle produit une erreur #N/A. Si vous souhaitez remplacer la notation d'erreur standard par quelque chose de plus significatif, enveloppez votre formule INDEX MATCH dans la fonction IFNA. Par exemple :
=IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Aucune correspondance trouvée")
Désormais, si quelqu'un saisit une table de recherche qui n'existe pas dans la plage de recherche, la formule informera explicitement l'utilisateur qu'aucune correspondance n'est trouvée :
Si vous voulez attraper toutes les erreurs, et pas seulement les #N/A, utilisez la fonction IFERROR au lieu de IFNA :
=IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Oups, quelque chose a mal tourné !")
Gardez à l'esprit que dans de nombreuses situations, il n'est pas judicieux de masquer toutes les erreurs, car elles vous alertent sur d'éventuels défauts de votre formule.
Voilà comment utiliser INDEX et MATCH dans Excel. J'espère que nos exemples de formules vous seront utiles et j'ai hâte de vous retrouver sur notre blog la semaine prochaine !
Cahier d'exercices à télécharger
Exemples Excel d'INDEX MATCH (fichier .xlsx)