VLOOKUP avancé dans Excel : multiple, double, imbriqué

  • Partage Ça
Michael Brown

Ces exemples vous apprendront à effectuer des Vlookup sur plusieurs critères, à renvoyer une instance spécifique ou toutes les correspondances, à effectuer des Vlookup dynamiques dans plusieurs feuilles, et bien plus encore.

Il s'agit de la deuxième partie de la série qui vous aidera à exploiter la puissance du VLOOKUP d'Excel. Les exemples impliquent que vous connaissiez le fonctionnement de cette fonction. Si ce n'est pas le cas, il est logique de commencer par les utilisations de base du VLOOKUP dans Excel.

Avant d'aller plus loin, laissez-moi vous rappeler brièvement la syntaxe :

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

Maintenant que tout le monde est sur la même longueur d'onde, examinons de plus près les exemples de formules VLOOKUP avancées :

    Comment faire un Vlookup de plusieurs critères

    La fonction VLOOKUP d'Excel est très utile lorsqu'il s'agit de rechercher une certaine valeur dans une base de données. Toutefois, elle présente une lacune importante : sa syntaxe ne permet qu'une seule valeur de recherche. Mais que faire si vous souhaitez effectuer une recherche avec plusieurs conditions ? Il existe plusieurs solutions différentes parmi lesquelles vous pouvez choisir.

    Formule 1 : VLOOKUP avec deux critères

    Supposons que vous ayez une liste de commandes et que vous vouliez trouver la quantité en fonction de 2 critères, Nom du client et Produit Un facteur de complication est que chaque client a commandé plusieurs produits, comme le montre le tableau ci-dessous :

    Une formule VLOOKUP habituelle ne fonctionnera pas dans cette situation, car elle renvoie la première correspondance trouvée sur la base d'une seule valeur de recherche que vous spécifiez.

    Pour surmonter ce problème, vous pouvez ajouter une colonne d'aide et concaténer les valeurs de deux colonnes de recherche ( Client et Produit Il est important que la colonne d'aide soit la même que celle de la colonne d'aide. le plus à gauche dans le tableau, car c'est là qu'Excel VLOOKUP recherche toujours la valeur de référence.

    Ajoutez donc une colonne à gauche de votre tableau et copiez la formule ci-dessous dans cette colonne, ce qui remplira la colonne d'aide avec les valeurs des colonnes B et C (le caractère espace est concaténé entre les deux pour une meilleure lisibilité) :

    =B2& ;" "&C2

    Ensuite, utilisez une formule VLOOKUP standard et placez les deux critères dans le tableau suivant valeur de la recherche l'argument, séparés par un espace :

    =VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)

    Vous pouvez également saisir les critères dans des cellules distinctes (G1 et G2 dans notre cas) et concaténer ces cellules :

    =VLOOKUP(G1& ;" "&G2, A2:D11, 4, FALSE)

    Comme nous voulons renvoyer une valeur de la colonne D, qui est la quatrième dans le tableau, nous utilisons 4 dans la formule col_index_num . le recherche de plage L'argument est mis à FALSE pour Vlookup une correspondance exacte. La capture d'écran ci-dessous montre le résultat :

    Si votre table de consultation est dans une autre feuille Dans le cas d'une formule VLOOKUP, incluez le nom de la feuille dans votre formule VLOOKUP, par exemple :

    =VLOOKUP(G1& ;" "&G2, Ordres!A2:D11, 4, FALSE)

    Vous pouvez également créer une plage nommée pour la table de consultation (par exemple, Commandes ) pour rendre la formule plus facile à lire :

    =VLOOKUP(G1& ;" "&G2, Ordres, 4, FALSE)

    Pour plus d'informations, veuillez consulter la rubrique Comment effectuer un Vlookup à partir d'une autre feuille dans Excel.

    Remarque : pour que la formule fonctionne correctement, les valeurs de la colonne d'aide doivent être concaténées exactement de la même manière que dans la colonne d'aide. valeur de la recherche Par exemple, nous avons utilisé un caractère d'espacement pour séparer les critères dans la colonne d'aide (B2& ;" "&C2) et la formule VLOOKUP (G1& ;" "&G2).

    Formule 2 : Excel VLOOKUP avec plusieurs conditions

    En théorie, vous pouvez utiliser l'approche ci-dessus pour effectuer une Vlookup sur plus de deux critères. Toutefois, il existe quelques inconvénients : premièrement, la valeur d'une Vlookup est limitée à 255 caractères et, deuxièmement, la conception de la feuille de calcul ne permet pas toujours d'ajouter une colonne d'aide.

    Heureusement, Microsoft Excel propose souvent plusieurs façons de faire la même chose. Pour effectuer un Vlookup de plusieurs critères, vous pouvez utiliser une combinaison INDEX MATCH ou la fonction XLOOKUP récemment introduite dans Office 365.

    Par exemple, pour effectuer une recherche sur la base de 3 valeurs différentes ( Date , Nom du client et Produit ), utilisez l'une des formules suivantes :

    =INDEX(D2:D11, MATCH(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), 0))

    =XLOOKUP(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), D2:D11)

    Où :

    • G1 est le critère 1 (date)
    • G2 est le critère 2 (nom du client)
    • G3 est le critère 3 (produit)
    • A2:A11 est la plage de consultation 1 (dates)
    • B2:B11 est la plage de consultation 2 (noms des clients)
    • C2:C11 est la plage de consultation 3 (produits)
    • D2:D11 est la plage de retour (quantité)

    Remarque : dans toutes les versions, à l'exception d'Excel 365, INDEX MATCH doit être saisi comme une formule de tableau CSE en appuyant sur Ctrl + Shift + Enter. Dans Excel 365 qui prend en charge les tableaux dynamiques, il fonctionne également comme une formule ordinaire.

    Pour l'explication détaillée des formules, veuillez consulter :

    • XLOOKUP avec plusieurs critères
    • Formule INDEX MATCH avec plusieurs critères

    Comment utiliser le VLOOKUP pour obtenir la 2e, 3e ou nième correspondance ?

    Comme vous le savez déjà, Excel VLOOKUP ne peut récupérer qu'une seule valeur correspondante, plus précisément, il renvoie la première correspondance trouvée. Mais que se passe-t-il si votre tableau de recherche contient plusieurs correspondances et que vous souhaitez obtenir la deuxième ou la troisième instance ? La tâche semble assez compliquée, mais la solution existe !

    Formule 1 : Vlookup Nth instance

    Supposons que vous ayez les noms des clients dans une colonne, les produits qu'ils ont achetés dans une autre, et que vous cherchiez à trouver le 2e ou 3e produit acheté par un client donné.

    La méthode la plus simple consiste à ajouter une colonne d'aide à gauche du tableau, comme nous l'avons fait dans le premier exemple, mais cette fois-ci, nous la remplirons avec les noms des clients et les numéros d'occurrence comme " John Doe1 ", " John Doe2 ", etc.

    Pour obtenir l'occurrence, utilisez la fonction COUNTIF avec une référence de plage mixte (la première référence est absolue et la seconde est relative, comme $B$2:B2). Comme la référence relative change en fonction de la position de la cellule où la formule est copiée, à la ligne 3, elle deviendra $B$2:B3, à la ligne 4 - $B$2:B4, et ainsi de suite.

    Concaténée avec le nom du client (B2), la formule prend la forme suivante :

    =B2&COUNTIF($B$2:B2, B2)

    La formule ci-dessus va dans A2, puis vous la copiez vers le bas dans autant de cellules que nécessaire.

    Ensuite, saisissez le nom de la cible et le numéro de l'occurrence dans des cellules distinctes (F1 et F2), puis utilisez la formule ci-dessous pour consulter une occurrence spécifique :

    =VLOOKUP(F1&F2, A2:C11, 3, FALSE)

    Formule 2 : Vlookup 2ème occurrence

    Si vous recherchez la deuxième instance de la valeur de recherche, vous pouvez vous passer de la colonne d'aide et créer le tableau de manière dynamique en utilisant la fonction INDIRECT avec MATCH :

    =VLOOKUP(E1, INDIRECT("A"& ;(MATCH(E1, A2:A11, 0)+2)& ;":B11"), 2, FALSE)

    Où :

    • E1 est la valeur de référence
    • A2:A11 est la plage de consultation
    • B11 est la dernière cellule (en bas à droite) de la table de consultation.

    Veuillez noter que la formule ci-dessus est écrite pour un cas spécifique où les cellules de données du tableau de consultation commencent à la ligne 2. Si votre tableau se trouve quelque part au milieu de la feuille, utilisez cette formule universelle, où A1 est la cellule supérieure gauche du tableau de consultation contenant un en-tête de colonne :

    =VLOOKUP(E1, INDIRECT("A"& ;(MATCH(E1, A2:A11, 0)+1+ROW(A1))& ;":B11"), 2, FALSE)

    Comment fonctionne cette formule

    Voici la partie essentielle de la formule qui crée une plage dynamique de vlookup :

    INDIRECT("A"& ;(MATCH(E1, A2:A11, 0)+2)& ;":B11")

    La fonction MATCH configurée pour une correspondance exacte (0 dans le dernier argument) compare le nom cible (E1) à la liste de noms (A2:A11) et renvoie la position de la première correspondance trouvée, qui est 3 dans notre cas. Ce nombre va être utilisé comme coordonnée de ligne de départ pour la plage vlookup, nous lui ajoutons donc 2 (+1 pour exclure la première instance et +1 pour exclure la ligne 1 avec les en-têtes de colonne).Vous pouvez également utiliser 1+ROW(A1) pour calculer automatiquement l'ajustement nécessaire en fonction de la position de la ligne d'en-tête (A1 dans notre cas).

    Nous obtenons ainsi la chaîne de texte suivante, que INDIRECT convertit en référence de plage :

    INDIRECT("A"&5& ;":B11") -> ; A5:B11

    Cette gamme va au tableau_réseau de VLOOKUP, ce qui l'oblige à commencer la recherche à la ligne 5, en laissant de côté la première instance de la valeur de recherche :

    VLOOKUP(E1, A5:B11, 2, FALSE)

    Comment faire un Vlookup et renvoyer plusieurs valeurs dans Excel ?

    La fonction Excel VLOOKUP est conçue pour ne renvoyer qu'une seule correspondance. Existe-t-il un moyen de Vlookup plusieurs instances ? Oui, il en existe un, mais il n'est pas facile. Cela nécessite l'utilisation combinée de plusieurs fonctions telles que INDEX, SMALL et ROW dans une formule de tableau.

    Par exemple, la fonction ci-dessous peut trouver toutes les occurrences de la valeur de recherche F2 dans la plage de recherche B2:B16 et renvoyer les correspondances multiples de la colonne C :

    {=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}

    Il y a deux façons d'entrer la formule dans votre feuille de calcul :

    1. Tapez la formule dans la première cellule, appuyez sur Ctrl + Shift + Enter , puis faites-la glisser vers d'autres cellules.
    2. Sélectionnez plusieurs cellules adjacentes dans une même colonne (F1:F11 dans la capture d'écran ci-dessous), tapez la formule et appuyez sur Ctrl + Shift + Enter pour la compléter.

    Dans tous les cas, le nombre de cellules dans lesquelles vous saisissez la formule doit être égal ou supérieur au nombre maximal de correspondances possibles.

    Pour une explication détaillée de la logique de la formule et d'autres exemples, veuillez consulter la rubrique Comment effectuer un VLOOKUP de plusieurs valeurs dans Excel.

    Comment effectuer un Vlookup en lignes et en colonnes (lookup à double sens) ?

    Recherche bidirectionnelle (alias recherche de matrice ou Recherche bidimensionnelle Il existe plusieurs façons différentes d'effectuer une recherche bidimensionnelle dans Excel, mais comme ce tutoriel se concentre sur la fonction VLOOKUP, nous allons naturellement l'utiliser.

    Pour cet exemple, nous allons prendre le tableau ci-dessous avec les ventes mensuelles et élaborer une formule VLOOKUP pour récupérer le chiffre d'affaires d'un article spécifique pour un mois donné.

    Avec les noms des articles dans A2:A9, les noms des mois dans B1:F1, l'article cible dans I1 et le mois cible dans I2, la formule est la suivante :

    =VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)

    Comment fonctionne cette formule

    Le cœur de la formule est la fonction VLOOKUP standard qui recherche une correspondance exacte avec la valeur de recherche dans I1. Mais comme nous ne savons pas exactement dans quelle colonne se trouvent les ventes d'un mois donné, nous ne pouvons pas fournir le numéro de colonne directement à la fonction VLOOKUP. col_index_num Pour trouver cette colonne, nous utilisons la fonction MATCH suivante :

    MATCH(I2, A1:F1, 0)

    Traduite en anglais, la formule dit : rechercher la valeur I2 dans A1:F1 et renvoyer sa position relative dans le tableau. En fournissant 0 au 3ème argument, vous demandez à MATCH de trouver la valeur exactement égale à la valeur de recherche (c'est comme utiliser FALSE pour l'option recherche de plage argument de VLOOKUP).

    Depuis Mar se trouve dans la 4e colonne du tableau de consultation, la fonction MATCH renvoie 4, qui va directement à l'élément col_index_num argument de VLOOKUP :

    VLOOKUP(I1, A2:F9, 4, FALSE)

    Veuillez noter que, bien que les noms de mois commencent dans la colonne B, nous utilisons A1:I1 pour le tableau de recherche, afin que le numéro renvoyé par MATCH corresponde à la position de la colonne dans le tableau. tableau_réseau de VLOOKUP.

    Pour connaître d'autres façons d'effectuer une recherche matricielle dans Excel, veuillez consulter la rubrique INDEX MATCH MATCH et d'autres formules de recherche bidimensionnelle.

    Comment faire des Vlookup multiples dans Excel (Vlookup imbriqué)

    Il peut arriver que votre table principale et votre table de recherche n'aient pas une seule colonne en commun, ce qui vous empêche d'effectuer une Vlookup entre deux tables. Cependant, il existe une autre table, qui ne contient pas les informations que vous recherchez mais qui a une colonne en commun avec la table principale et une autre colonne en commun avec la table de recherche.

    L'image ci-dessous illustre la situation :

    L'objectif est de copier les prix dans la table principale en fonction des critères suivants ID des articles Le problème est que le tableau contenant les prix n'a pas l'adresse de la table. ID des articles ce qui signifie que nous devrons faire deux Vlookups dans une seule formule.

    Pour des raisons de commodité, nous allons d'abord créer quelques plages nommées :

    • La table de recherche 1 est nommée Produits (D3:E10)
    • La table de recherche 2 est nommée Prix ( G3:H10 )

    Les tableaux peuvent se trouver dans la même feuille de calcul ou dans des feuilles différentes.

    Et maintenant, nous allons effectuer ce que l'on appelle double Vlookup , alias Vlookup imbriqué .

    Tout d'abord, faites une formule VLOOKUP pour trouver le nom du produit dans la table Lookup 1 (nommée Produits ) sur la base de l'identifiant de l'élément (A3) :

    =VLOOKUP(A3, Produits, 2, FALSE)

    Ensuite, mettez la formule ci-dessus dans le fichier valeur de la recherche argument d'une autre fonction VLOOKUP pour extraire les prix de la table Lookup 2 (nommée Prix ) sur la base du nom du produit renvoyé par le VLOOKUP imbriqué :

    =VLOOKUP(VLOOKUP(A3, Products, 2, FALSE), Prices, 2, FALSE)

    La capture d'écran ci-dessous montre notre formule Vlookup imbriquée en action :

    Comment faire un Vlookup dynamique de plusieurs feuilles

    Parfois, vous pouvez avoir des données au même format réparties sur plusieurs feuilles de calcul, et votre objectif est d'extraire des données d'une feuille spécifique en fonction de la valeur clé d'une cellule donnée.

    Supposons que vous disposiez de plusieurs rapports de vente régionaux au même format et que vous cherchiez à obtenir les chiffres de vente d'un produit spécifique dans certaines régions :

    Comme dans l'exemple précédent, nous commençons par définir quelques noms :

    • La plage A2:B5 de la feuille CA est nommée CA_Ventes .
    • La plage A2:B5 de la feuille FL est nommée FL_Sales .
    • La plage A2:B5 de la feuille KS est nommée KS_Sales .

    Comme vous pouvez le constater, toutes les plages nommées ont une partie commune ( Ventes ) et des parties uniques ( CA , FL , KS Veillez à nommer vos plages de la même manière, car c'est essentiel pour la formule que nous allons construire.

    Formule 1 : VLOOKUP INDIRECT pour extraire dynamiquement des données de différentes feuilles.

    Si votre tâche consiste à extraire des données de plusieurs feuilles, une formule VLOOKUP INDIRECT est la meilleure solution - compacte et facile à comprendre.

    Pour cet exemple, nous organisons le tableau récapitulatif de la manière suivante :

    • Entrez les produits qui nous intéressent dans A2 et A3. Ce sont nos valeurs de référence.
    • Entrez les parties uniques des plages nommées dans B1, C1 et D1.

    Et maintenant, nous concaténons la cellule contenant la partie unique (B1) avec la partie commune ("_Sales"), et nous envoyons la chaîne résultante à INDIRECT :

    INDIRECT(B$1& ;"_Ventes")

    La fonction INDIRECT transforme la chaîne de caractères en un nom qu'Excel peut comprendre, et vous la placez dans le champ tableau_réseau argument de VLOOKUP :

    =VLOOKUP($A2, INDIRECT(B$1& ;"_Sales"), 2, FALSE)

    La formule ci-dessus va en B2, puis vous la copiez vers le bas et vers la droite.

    Veuillez noter que, dans la valeur de référence ($A2), nous avons verrouillé la coordonnée de la colonne avec une référence de cellule absolue afin que la colonne reste fixe lorsque la formule est copiée vers la droite. Dans la référence B$1, nous avons verrouillé la ligne car nous voulons que la coordonnée de la colonne change et fournisse une partie de nom appropriée à INDIRECT en fonction de la colonne dans laquelle la formule est copiée :

    Si votre table principale est organisée différemment, les valeurs de consultation dans une ligne et les parties uniques des noms de plage dans une colonne, alors vous devez verrouiller la coordonnée de ligne dans la valeur de consultation (B$1) et la coordonnée de colonne dans les parties de nom ($A2) :

    =VLOOKUP(B$1, INDIRECT($A2& ;"_Sales"), 2, FALSE)

    Formule 2 : VLOOKUP et IF imbriqués pour consulter plusieurs feuilles.

    Lorsque vous ne disposez que de deux ou trois feuilles de consultation, vous pouvez utiliser une formule VLOOKUP assez simple avec des fonctions IF imbriquées pour sélectionner la bonne feuille en fonction de la valeur clé d'une cellule particulière :

    =VLOOKUP($A2, IF(B$1="CA", CA_Sales, IF(B$1="FL", FL_Sales, IF(B$1="KS", KS_Sales, "")), 2, FALSE)

    Où $A2 est la valeur de consultation (nom de l'élément) et B$1 est la valeur de la clé (état) :

    Dans ce cas, vous n'avez pas nécessairement besoin de définir des noms et vous pouvez utiliser des références externes pour vous référer à une autre feuille ou à un autre classeur.

    Pour plus d'exemples de formules, veuillez consulter la rubrique Comment effectuer un VLOOKUP sur plusieurs feuilles dans Excel.

    Voilà comment utiliser VLOOKUP dans Excel. 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 formules VLOOKUP avancées (fichier .xlsx)

    Michael Brown est un passionné de technologie passionné par la simplification de processus complexes à l'aide d'outils logiciels. Avec plus d'une décennie d'expérience dans l'industrie de la technologie, il a perfectionné ses compétences dans Microsoft Excel et Outlook, ainsi que dans Google Sheets et Docs. Le blog de Michael est dédié au partage de ses connaissances et de son expertise avec les autres, en fournissant des conseils et des tutoriels faciles à suivre pour améliorer la productivité et l'efficacité. Que vous soyez un professionnel chevronné ou un débutant, le blog de Michael offre des informations précieuses et des conseils pratiques pour tirer le meilleur parti de ces outils logiciels essentiels.