Table des matières
Le tutoriel présente XLOOKUP - la nouvelle fonction de recherche verticale et horizontale dans Excel. Recherche à gauche, dernière correspondance, Vlookup avec plusieurs critères et bien d'autres choses qui nécessitaient auparavant un diplôme en sciences de la fusée pour les accomplir sont maintenant devenues aussi simples que l'ABC.
Lorsque vous avez besoin d'effectuer une recherche dans Excel, quelle fonction utilisez-vous ? S'agit-il de la pierre angulaire VLOOKUP ou de sa sœur horizontale HLOOKUP ? Dans un cas plus complexe, allez-vous vous fier à la combinaison canonique INDEX MATCH ou confier le travail à Power Query ? La bonne nouvelle est que vous n'avez plus à choisir - toutes ces méthodes font place à un successeur plus puissant et polyvalent, la fonction XLOOKUP.
En quoi XLOOKUP est-il meilleur ? À bien des égards ! Il peut regarder verticalement et horizontalement, à gauche et en haut, effectuer des recherches avec plusieurs critères et même renvoyer une colonne ou une ligne entière de données, et pas seulement une valeur. Il a fallu à Microsoft plus de trois décennies, mais ils ont finalement réussi à concevoir une fonction robuste qui surmonte de nombreuses erreurs et faiblesses frustrantes de VLOOKUP.
La fonction XLOOKUP n'est disponible que dans Excel pour Microsoft 365, Excel 2021 et Excel pour le web.
Fonction Excel XLOOKUP - syntaxe et utilisations
La fonction XLOOKUP d'Excel recherche une valeur spécifiée dans une plage ou un tableau et renvoie la valeur correspondante dans une autre colonne. Elle peut effectuer une recherche verticale ou horizontale et réaliser une correspondance exacte (par défaut), approximative (la plus proche) ou joker (correspondance partielle).
La syntaxe de la fonction XLOOKUP est la suivante :
XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])Les trois premiers arguments sont obligatoires et les trois derniers sont facultatifs.
- Valeur de la recherche - la valeur à rechercher.
- Tableau de recherche - la plage ou le tableau où effectuer la recherche.
- Tableau de retour - la plage ou le tableau à partir duquel les valeurs sont retournées.
- Si_non_trouvé [facultatif] - la valeur à retourner si aucune correspondance n'est trouvée. Si elle est omise, une erreur #N/A est retournée.
- Match_mode [facultatif] - le type de correspondance à effectuer :
- 0 ou omis (par défaut) - correspondance exacte. Si elle n'est pas trouvée, une erreur #N/A est renvoyée.
- -1 - correspondance exacte ou valeur immédiatement inférieure. Si une correspondance exacte n'est pas trouvée, la valeur immédiatement inférieure est retournée.
- 1 - correspondance exacte ou valeur supérieure suivante. Si une correspondance exacte n'est pas trouvée, la valeur supérieure suivante est retournée.
- 2 - correspondance avec un caractère générique.
- Mode de recherche [facultatif] - la direction de la recherche :
- 1 ou omis (par défaut) - pour rechercher du premier au dernier.
- -1 - pour effectuer une recherche dans l'ordre inverse, du dernier au premier.
- 2 - recherche binaire sur des données triées par ordre croissant.
- -2 - recherche binaire sur des données triées par ordre décroissant.
Selon Microsoft, recherche binaire est incluse pour les utilisateurs avancés. Il s'agit d'un algorithme spécial qui trouve la position d'une valeur de consultation dans un tableau trié en la comparant à l'élément central du tableau. Une recherche binaire est beaucoup plus rapide qu'une recherche normale mais ne fonctionne correctement que sur des données triées.
Formule XLOOKUP de base
Pour mieux comprendre, construisons une formule Xlookup dans sa forme la plus simple pour effectuer une recherche exacte. Pour cela, nous n'aurons besoin que des 3 premiers arguments.
Supposons que vous disposiez d'un tableau récapitulatif contenant des informations sur les cinq océans de la Terre. Vous souhaitez obtenir la superficie d'un océan spécifique saisie en F1 ( valeur de la recherche Avec les noms des océans en A2:A6 ( lookup_array ) et des zones en C2:C6 ( return_array ), la formule est la suivante :
=XLOOKUP(F1, A2:A6, C2:C6)
Traduit en anglais simple, cela signifie : rechercher la valeur F1 dans A2:A6 et retourner une valeur de C2:C6 dans la même ligne. Pas de numéros d'index de colonne, pas de tri, pas d'autres bizarreries ridicules de Vlookup ! Cela fonctionne tout simplement :)
XLOOKUP vs. VLOOKUP dans Excel
Par rapport à la fonction VLOOKUP traditionnelle, XLOOKUP présente de nombreux avantages. En quoi est-elle meilleure que VLOOKUP ? Voici une liste des 10 meilleures fonctions qui surpassent toutes les autres fonctions de consultation d'Excel :
- Recherche verticale et horizontale La fonction XLOOKUP doit son nom à sa capacité à effectuer des recherches à la fois verticales et horizontales.
- Regardez dans n'importe quelle direction : droite, gauche, bas ou haut. Alors que VLOOKUP ne peut chercher que dans la colonne la plus à gauche et HLOOKUP dans la ligne la plus haute, XLOOKUP n'a pas de telles limitations. La fameuse recherche à gauche dans Excel n'est plus un problème !
- Correspondance exacte par défaut Dans la plupart des cas, vous recherchez une correspondance exacte, et XLOOKUP la renvoie par défaut (contrairement à la fonction VLOOKUP qui propose par défaut une correspondance approximative). Bien entendu, vous pouvez également demander à XLOOKUP d'effectuer une correspondance approximative si nécessaire.
- Correspondance partielle avec des caractères génériques Lorsque vous ne connaissez qu'une partie de la valeur recherchée, mais pas la totalité, une correspondance avec un caractère de remplacement s'avère utile.
- Recherche en ordre inverse Auparavant, pour obtenir la dernière occurrence, vous deviez inverser l'ordre de vos données sources. Maintenant, il vous suffit de définir l'attribut mode de recherche à -1 pour forcer votre formule Xlookup à rechercher à partir de l'arrière et à renvoyer la dernière correspondance.
- Renvoyer plusieurs valeurs En manipulant avec le return_array vous pouvez extraire une ligne ou une colonne entière de données liées à votre valeur de recherche.
- Recherche avec plusieurs critères Excel XLOOKUP gère les tableaux de manière native, ce qui permet d'effectuer des recherches avec plusieurs critères.
- Si la fonctionnalité d'erreur Traditionnellement, nous utilisons la fonction IFNA pour détecter les erreurs #N/A. XLOOKUP incorpore cette fonctionnalité dans le système de gestion des données. si_non_trouvé permettant d'afficher votre propre texte si aucune correspondance valide n'est trouvée.
- Insertions/suppressions de colonnes L'un des problèmes les plus irritants de VLOOKUP est que l'ajout ou la suppression de colonnes interrompt la formule, car la colonne de retour est identifiée par son numéro d'index. Avec XLOOKUP, vous fournissez la plage de retour, et non le numéro, ce qui signifie que vous pouvez insérer et supprimer autant de colonnes que vous le souhaitez sans interrompre la formule.
- Meilleure performance VLOOKUP peut ralentir vos feuilles de calcul car il inclut l'ensemble du tableau dans les calculs, ce qui entraîne le traitement de beaucoup plus de cellules que nécessaire. XLOOKUP ne traite que les tableaux de consultation et de retour dont il dépend réellement.
Comment utiliser XLOOKUP dans Excel - exemples de formules
Les exemples suivants montrent les fonctions les plus utiles de XLOOKUP en action. En outre, vous découvrirez quelques utilisations non triviales qui vous permettront d'améliorer vos compétences en matière de recherche dans Excel.
Regardez vers le haut, verticalement et horizontalement
Microsoft Excel disposait auparavant de deux fonctions pour différents types de consultation, chacune ayant sa propre syntaxe et ses propres règles d'utilisation : VLOOKUP pour consulter verticalement une colonne et HLOOKUP pour consulter horizontalement une ligne.
La fonction XLOOKUP peut faire les deux avec la même syntaxe. La différence réside dans ce que vous fournissez pour les tableaux de recherche et de retour.
Pour le v-lookup, fournir des colonnes :
=XLOOKUP(E1, A2:A6, B2:B6)
Pour le h-lookup, entrez des lignes au lieu de colonnes :
=XLOOKUP(I1, B1:F1, B2:F2)
Recherche à gauche effectuée en mode natif
Dans les versions antérieures d'Excel, la formule INDEX MATCH était le seul moyen fiable de rechercher à gauche ou en haut. Désormais, vous n'avez plus besoin de combiner deux fonctions là où une seule suffirait. Il suffit de spécifier le tableau de recherche cible, et XLOOKUP le traitera sans problème, quel que soit son emplacement.
À titre d'exemple, ajoutons le Rang Le but est d'obtenir le rang de l'entrée océanique dans F1. VLOOKUP trébucherait ici car il ne peut renvoyer qu'une valeur d'une colonne à droite de la colonne de recherche. Une formule Xlookup s'en sort facilement :
=XLOOKUP(F1, B2:B6, A2:A6)
De la même manière, vous pouvez regarder au-dessus lorsque vous effectuez une recherche horizontale dans les rangées.
XLOOKUP avec correspondance exacte et approximative
Le comportement de la correspondance est contrôlé par le 5e argument appelé mode de correspondance Par défaut, une correspondance exacte est effectuée.
Veuillez noter que même si vous choisissez une correspondance approximative ( mode de correspondance La différence réside dans ce qu'elle renvoie si une valeur de recherche exacte n'est pas trouvée.
Argument Match_mode :
- 0 ou omis - correspondance exacte ; si non trouvé - erreur #N/A.
- -1 - correspondance exacte ; si elle n'est pas trouvée - prochain élément plus petit.
- 1 - correspondance exacte ; si non trouvé - prochain article plus grand.
Correspondance exacte XLOOKUP
C'est l'option que vous utilisez probablement 99% des fois où vous faites des recherches dans Excel. Comme une correspondance exacte est le comportement par défaut de XLOOKUP, vous pouvez omettre mode de correspondance et ne fournir que les 3 premiers arguments requis.
Dans certaines situations, cependant, une correspondance exacte ne fonctionnera pas. Un scénario typique est celui où votre table de consultation ne contient pas toutes les valeurs, mais plutôt des "jalons" ou des "limites" comme des remises basées sur la quantité, des commissions basées sur les ventes, etc.
Notre exemple de table de recherche montre la corrélation entre les résultats des examens et les notes. Comme vous pouvez le voir dans la capture d'écran ci-dessous, une correspondance exacte ne fonctionne que lorsque le score d'un étudiant particulier correspond exactement à la valeur de la table de recherche (comme Christian à la ligne 3). Dans tous les autres cas, une erreur #N/A est renvoyée.
=XLOOKUP(F2, $B$2:$B$6, $C$2:$C$6)
Pour obtenir les notes au lieu des erreurs #N/A, nous devons rechercher une correspondance approximative comme le montre l'exemple suivant.
Correspondance approximative XLOOKUP
Pour effectuer une recherche approximative, définissez l'option mode de correspondance à -1 ou 1, selon la façon dont vos données sont organisées.
Dans notre cas, la table de consultation liste les limites inférieures des notes. Ainsi, nous définissons mode de correspondance à -1 pour rechercher la valeur immédiatement inférieure lorsqu'une correspondance exacte n'est pas trouvée :
=XLOOKUP(F11, $B$11:$B$15, $C$11:$C$15, ,-1)
Par exemple, Brian a la note 98 (F2). La formule cherche cette valeur de référence dans B2:B6 mais ne la trouve pas. Elle cherche alors l'élément plus petit suivant et trouve 90, qui correspond à la note A :
Si notre table de consultation contenait les limites supérieures des notes, nous mettrions mode de correspondance à 1 pour rechercher le plus grand élément suivant si une correspondance exacte échoue :
=XLOOKUP(F2, $B$2:$B$6, $C$2:$C$6, ,1)
La formule cherche 98 et ne le trouve pas non plus. Cette fois, elle essaie de trouver la valeur immédiatement supérieure et obtient 100, ce qui correspond à la note A :
Conseil : lorsque vous copiez une formule Xlookup dans plusieurs cellules, verrouillez les plages de consultation ou de retour avec des références cellulaires absolues (comme $B$2:$B$6) pour éviter qu'elles ne soient modifiées.
XLOOKUP avec correspondance partielle (caractères génériques)
Pour effectuer une recherche de correspondance partielle, définissez le paramètre mode de correspondance à 2, ce qui indique à la fonction XLOOKUP de traiter les caractères génériques :
- Un astérisque (*) - représente toute séquence de caractères.
- Un point d'interrogation ( ?) - représente un caractère unique quelconque.
Pour voir comment cela fonctionne, prenez l'exemple suivant. Dans la colonne A, vous avez quelques modèles de smartphones et, dans la colonne B, la capacité de leur batterie. Vous êtes curieux de connaître la batterie d'un certain smartphone. Le problème est que vous n'êtes pas sûr de pouvoir taper le nom du modèle exactement comme il apparaît dans la colonne A. Pour y remédier, saisissez la partie qui est bien là et remplacez le reste par le nom du modèle.avec des caractères de remplacement.
Par exemple, pour obtenir des informations sur la batterie de l'iPhone X, utilisez cette formule :
=XLOOKUP("*iphone X*", A2:A8, B2:B8, ,2)
Vous pouvez également saisir la partie connue de la valeur de consultation dans une cellule et concaténer la référence de la cellule avec les caractères génériques :
=XLOOKUP("*"&E1& ; "*", A2:A8, B2:B8, ,2)
XLOOKUP en ordre inverse pour obtenir la dernière occurrence
Dans le cas où votre tableau contient plusieurs occurrences de la valeur de recherche, vous pouvez parfois avoir besoin de renvoyer la valeur de recherche. dernier match Pour ce faire, configurez votre formule Xlookup pour effectuer une recherche en ordre inverse.
La direction de la recherche est contrôlée par le 6ème argument nommé. mode de recherche :
- 1 ou omis (par défaut) - recherche de la première à la dernière valeur, c'est-à-dire de haut en bas avec une recherche verticale ou de gauche à droite avec une recherche horizontale.
- -1 - recherche dans l'ordre inverse de la dernière à la première valeur.
À titre d'exemple, retournons la dernière vente effectuée par un vendeur spécifique. Pour cela, nous réunissons les trois premiers arguments requis (G1 pour valeur de la recherche B2:B9 pour lookup_array et D2:D9 pour return_array ) et mettre -1 dans le 5ème argument :
=XLOOKUP(G1, B2:B9, D2:D9, , ,-1)
C'est simple et facile, n'est-ce pas ?
XLOOKUP pour retourner plusieurs colonnes ou lignes
Une autre caractéristique étonnante de XLOOKUP est sa capacité à renvoyer plus d'une valeur relative à la même correspondance. Tout cela est fait avec la syntaxe standard et sans aucune manipulation supplémentaire !
Dans le tableau ci-dessous, supposons que vous souhaitiez récupérer tous les détails relatifs au vendeur qui vous intéresse (F2). Vous devez fournir une plage, et non pas une seule colonne ou ligne, pour le champ return_array argument :
=XLOOKUP(F2, A2:A7, B2:D7)
Vous entrez la formule dans la cellule supérieure gauche de la plage de résultats, et Excel déverse automatiquement les résultats dans les cellules vides adjacentes. Dans notre cas, la plage de résultats (B2:D7) comprend 3 colonnes ( Date , Article et Montant ), et les trois valeurs sont renvoyées dans l'intervalle G2:I2.
Si vous préférez disposer les résultats verticalement dans une colonne, imbriquez XLOOKUP dans la fonction TRANSPOSE pour retourner le tableau retourné :
=TRANSPOSE(XLOOKUP(G1, A2:A7, B2:D7))
De la même manière, vous pouvez renvoyer une colonne entière de données, par exemple le fichier Montant Pour cela, utilisez la cellule F1 qui contient "Montant" en tant que valeur de la recherche la plage A1:D1 contenant les en-têtes de colonnes comme suit lookup_array et la plage A2:D7 contenant toutes les données en tant que return_array .
=XLOOKUP(F1, A1:D1, A2:D7)
Remarque : étant donné que plusieurs valeurs sont introduites dans les cellules voisines, assurez-vous que vous avez suffisamment de cellules vides à droite ou en bas. Si Excel ne trouve pas suffisamment de cellules vides, une erreur #SPILL ! se produit.
Astuce : XLOOKUP peut non seulement renvoyer des entrées multiples mais aussi les remplacer par d'autres valeurs que vous spécifiez. Vous trouverez un exemple d'un tel remplacement en bloc ici : Comment rechercher et remplacer plusieurs valeurs avec XLOOKUP.
XLOOKUP avec plusieurs critères
Un autre grand avantage de XLOOKUP est qu'il gère nativement les tableaux. Grâce à cette capacité, vous pouvez évaluer plusieurs critères directement dans l'écran de l'utilisateur. lookup_array argument :
XLOOKUP(1, ( critères_gamme1 = critères1 ) * ( critères_gamme2 = critères2 ) * (...), return_array )Comment fonctionne cette formule Le résultat de chaque test de critère est un tableau de valeurs VRAI et FAUX. La multiplication des tableaux convertit VRAI et FAUX en 1 et 0, respectivement, et produit le tableau de recherche final. Comme vous le savez, la multiplication par 0 donne toujours zéro, donc dans le tableau de recherche, seuls les éléments qui répondent à tous les critères sont représentés par 1. Et parce que notre valeur de recherche est "1", Excel prend le premier "1" dans le tableau de recherche. lookup_array (première correspondance) et renvoie la valeur de return_array dans la même position.
Pour voir la formule en action, tirons un montant de D2:D10 ( return_array ) avec les conditions suivantes :
- Critère1 (date) = G1
- Critère2 (vendeur) = G2
- Critère3 (item) = G3
Avec des dates en A2:A10 ( critères_gamme1 ), les noms des vendeurs dans B2:B10 ( critères_gamme2 ) et les éléments de C2:C10 ( critères_gamme3 ), la formule prend cette forme :
=XLOOKUP(1, (B2:B10=G1) * (A2:A10=G2) * (C2:C10=G3), D2:D10)
Bien que la fonction XLOOKUP d'Excel traite des tableaux, elle fonctionne comme une formule ordinaire et se termine par une simple pression sur la touche Entrée.
La formule XLOOKUP avec plusieurs critères n'est pas limitée aux conditions "égal à". Vous êtes libre d'utiliser d'autres opérateurs logiques. Par exemple, pour filtrer les commandes effectuées à la date de G1 ou avant, mettez "<=G1" dans le premier critère :
=XLOOKUP(1, (A2:A10<=G1) * (B2:B10=G2) * (C2:C10=G3), D2:D10)
Double XLOOKUP
Pour trouver une valeur à l'intersection d'une certaine ligne et d'une certaine colonne, effectuez ce que l'on appelle le double lookup ou recherche de matrice Oui, Excel XLOOKUP peut aussi le faire ! Il suffit d'imbriquer une fonction dans une autre :
XLOOKUP( valeur_consultation1 , lookup_array1 , XLOOKUP( lookup_value2 , lookup_array2 , valeurs des données ))Comment fonctionne cette formule La formule est basée sur la capacité de XLOOKUP à renvoyer une ligne ou une colonne entière. La fonction interne recherche sa valeur de consultation et renvoie une colonne ou une ligne de données connexes. Ce tableau est transmis à la fonction externe en tant qu'objet return_array .
Pour ce faire, nous entrons les valeurs de recherche dans H1 (nom du vendeur) et H2 (trimestre), et nous effectuons un Xlookup à deux voies avec la formule suivante :
=XLOOKUP(H1, A2:A6, XLOOKUP(H2, B1:E1, B2:E6))
Ou l'inverse :
=XLOOKUP(H2, B1:E1, XLOOKUP(H1, A2:A6, B2:E6))
Où A2:A6 sont les noms des vendeurs, B1:E1 sont les trimestres (en-têtes de colonne), et B2:E6 sont les valeurs des données.
Une recherche bidirectionnelle peut également être effectuée à l'aide d'une formule INDEX Match et de quelques autres façons. Pour plus d'informations, consultez la rubrique Recherche bidirectionnelle dans Excel.
Si erreur XLOOKUP
Lorsque la valeur recherchée n'est pas trouvée, Excel XLOOKUP renvoie une erreur #N/A. Bien que familière et compréhensible pour les utilisateurs experts, elle peut être assez déroutante pour les novices. Pour remplacer la notation d'erreur standard par un message convivial, tapez votre propre texte dans le 4ème argument nommé si_non_trouvé .
Revenons au tout premier exemple abordé dans ce tutoriel. Si quelqu'un saisit un nom d'océan invalide dans E1, la formule suivante lui indiquera explicitement que "Aucune correspondance n'a été trouvée" :
=XLOOKUP(E1, A2:A6, B2:B6, "Aucune correspondance trouvée")
Notes :
- Le site si_non_trouvé ne piège que les erreurs #N/A, pas toutes les erreurs.
- Les erreurs #N/A peuvent également être traitées avec IFNA et VLOOKUP, mais la syntaxe est un peu plus complexe et la formule est plus longue.
XLOOKUP sensible à la casse
Par défaut, la fonction XLOOKUP traite les lettres minuscules et majuscules comme des caractères identiques. Pour la rendre sensible à la casse, utilisez la fonction EXACT pour le champ lookup_array argument :
XLOOKUP(TRUE, EXACT( valeur de la recherche , lookup_array ), return_array )Comment fonctionne cette formule La fonction EXACT compare la valeur de la recherche à chaque valeur du tableau de recherche et renvoie VRAI si elles sont exactement les mêmes, y compris la casse des lettres, et FAUX sinon. lookup_array En conséquence, XLOOKUP recherche la valeur TRUE dans le tableau ci-dessus et renvoie une correspondance dans le tableau de retour.
Par exemple, pour obtenir le prix de B2:B7 ( return_array ) pour l'élément dans E1 ( lookup_value) la formule en E2 est :
=XLOOKUP(TRUE, EXACT(E1, A2:A7), B2:B7, "Non trouvé")
Remarque : si le tableau de recherche contient au moins deux valeurs identiques (y compris la casse des lettres), la première correspondance trouvée est renvoyée.
Excel XLOOKUP ne fonctionne pas
Si votre formule ne fonctionne pas correctement ou donne lieu à des erreurs, il est fort probable que ce soit pour les raisons suivantes :
XLOOKUP n'est pas disponible dans mon Excel.
La fonction XLOOKUP n'est pas rétrocompatible. Elle est uniquement disponible dans Excel pour Microsoft 365 et Excel 2021, et n'apparaît pas dans les versions antérieures.
XLOOKUP renvoie un résultat erroné
Si votre formule Xlookup, manifestement correcte, renvoie une valeur erronée, il y a de fortes chances que la plage de consultation ou de retour se soit "déplacée" lorsque la formule a été copiée vers le bas ou vers le haut. Pour éviter que cela ne se produise, veillez à toujours verrouiller les deux plages avec des références cellulaires absolues (comme $A$2:$A$10).
XLOOKUP renvoie l'erreur #N/A
Une erreur #N/A signifie simplement que la valeur de recherche n'a pas été trouvée. Pour résoudre ce problème, essayez de rechercher une correspondance approximative ou informez vos utilisateurs qu'aucune correspondance n'a été trouvée.
XLOOKUP renvoie une erreur #VALUE
Une erreur #VALUE ! se produit si les tableaux de recherche et de retour ont des dimensions incompatibles. Par exemple, il n'est pas possible d'effectuer une recherche dans un tableau horizontal et de retourner les valeurs d'un tableau vertical.
XLOOKUP renvoie une erreur #REF
Une erreur #REF ! est générée lors de la recherche entre deux classeurs différents, dont l'un est fermé. Pour corriger l'erreur, il suffit d'ouvrir les deux fichiers.
Comme vous venez de le voir, XLOOKUP possède de nombreuses fonctionnalités impressionnantes qui en font LA fonction pour presque toutes les recherches 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 Excel XLOOKUP (fichier .xlsx)