Table des matières
Le tutoriel présente quelques formules différentes pour effectuer une recherche bidimensionnelle dans Excel. Regardez les alternatives et choisissez votre préférée :)
Lorsque vous recherchez quelque chose dans vos feuilles de calcul Excel, la plupart du temps vous regardez verticalement dans les colonnes ou horizontalement dans les lignes. Mais parfois vous devez regarder à travers les lignes et les colonnes. En d'autres termes, vous cherchez une valeur à l'intersection d'une certaine ligne et d'une certaine colonne. Cela s'appelle recherche de matrice (alias 2-dimensionnel ou Recherche à double sens ), et ce tutoriel montre comment le faire de 4 façons différentes.
Formule Excel INDEX MATCH MATCH
La façon la plus courante d'effectuer une recherche bidirectionnelle dans Excel est d'utiliser la formule INDEX MATCH MATCH. Il s'agit d'une variante de la formule INDEX MATCH classique à laquelle vous ajoutez une fonction MATCH supplémentaire afin d'obtenir les numéros de ligne et de colonne :
À titre d'exemple, élaborons une formule permettant de tirer du tableau ci-dessous la population d'un certain animal pour une année donnée. Pour commencer, nous définissons tous les arguments :
- Tableau de données - B2:E4 (cellules de données, sans les en-têtes de lignes et de colonnes)
- Vlookup_value - H1 (animal cible)
- Recherche_colonne_gamme - A2:A4 (en-têtes de ligne : noms des animaux) - A3:A4
- Hlookup_value - H2 (année cible)
- Recherche d'une gamme de rangs - B1:E1 (en-tête de colonne : années)
Mettez tous les arguments ensemble et vous obtiendrez cette formule pour la recherche bidirectionnelle :
=INDEX(B2:E4, MATCH(H1, A2:A4, 0), MATCH(H2, B1:E1, 0))
Comment fonctionne cette formule
La fonction INDEX extrait une valeur du tableau de données en fonction des numéros de ligne et de colonne, et deux fonctions MATCH fournissent ces numéros :
INDEX(B2:E4, row_num, column_num)
Ici, nous tirons parti de la capacité de MATCH(lookup_value, lookup_array, [match_type]) à renvoyer un fichier de type position relative de valeur de la recherche sur lookup_array .
Ainsi, pour obtenir le numéro de ligne, nous recherchons l'animal d'intérêt (H1) dans les en-têtes de ligne (A2:A4) :
MATCH(H1, A2:A4, 0)
Pour obtenir le numéro de colonne, nous recherchons l'année cible (H2) dans les en-têtes de colonne (B1:E1) :
MATCH(H2, B1:E1, 0)
Dans les deux cas, nous recherchons la correspondance exacte en mettant le 3ème argument à 0.
Dans cet exemple, le premier MATCH renvoie 2 parce que notre valeur vlookup (Polar bear) se trouve dans A3, qui est la 2ème cellule de A2:A4. Le second MATCH renvoie 3 parce que la valeur hlookup (2000) se trouve dans D1, qui est la 3ème cellule de B1:E1.
Compte tenu de ce qui précède, la formule se réduit à :
INDEX(B2:E4, 2, 3)
Et retourner une valeur à l'intersection de la 2ème ligne et de la 3ème colonne dans le tableau de données B2:E4, qui est une valeur dans la cellule D3.
Formule VLOOKUP et MATCH pour la recherche à deux voies
Une autre façon d'effectuer une recherche bidimensionnelle dans Excel consiste à utiliser une combinaison des fonctions VLOOKUP et MATCH :
VLOOKUP( vlookup_value , tableau_réseau , MATCH( hlookup_value , recherche_rangée , 0), FALSE)Pour notre tableau type, la formule prend la forme suivante :
=VLOOKUP(H1, A2:E4, MATCH(H2, A1:E1, 0), FALSE)
Où :
- Table_array - A2:E4 (cellules de données, y compris les en-têtes de ligne)
- Vlookup_value - H1 (animal cible)
- Hlookup_value - H2 (année cible)
- Recherche d'une gamme de rangs - A1:E1 (en-tête de colonne : années)
Comment fonctionne cette formule
Le cœur de la formule est la fonction VLOOKUP configurée pour une correspondance exacte (le dernier argument étant défini sur FALSE), qui recherche la valeur de référence (H1) dans la première colonne du tableau (A2:E4) et renvoie une valeur provenant d'une autre colonne de la même ligne. Pour déterminer la colonne à partir de laquelle renvoyer une valeur, vous utilisez la fonction MATCH, également configurée pour une correspondance exacte (le dernier argument étant défini sur 0) :
MATCH(H2, A1:E1, 0)
MATCH recherche la valeur dans H2 à travers les en-têtes de colonne (A1:E1) et renvoie la position relative de la cellule trouvée. Dans notre cas, l'année cible (2010) est trouvée dans E1, qui est la 5e dans le tableau de recherche. Ainsi, le nombre 5 va à la cellule col_index_num argument de VLOOKUP :
VLOOKUP(H1, A2:E4, 5, FALSE)
VLOOKUP prend le relais, trouve une correspondance exacte pour sa valeur de recherche dans A2 et renvoie une valeur de la 5e colonne de la même ligne, à savoir la cellule E2.
Note importante : pour que la formule fonctionne correctement, tableau_réseau (A2:E4) de VLOOKUP et lookup_array de MATCH (A1:E1) doivent avoir le même nombre de colonnes, sinon le nombre passé par MATCH à col_index_num sera incorrect (ne correspondra pas à la position de la colonne dans tableau_réseau ).
Fonction XLOOKUP pour rechercher dans les lignes et les colonnes
Récemment, Microsoft a introduit dans Excel une fonction supplémentaire destinée à remplacer toutes les fonctions de consultation existantes, telles que VLOOKUP, HLOOKUP et INDEX MATCH. XLOOKUP permet, entre autres, d'examiner l'intersection d'une ligne et d'une colonne spécifiques :
XLOOKUP( vlookup_value , vlookup_column_range , XLOOKUP( hlookup_value , hlookup_row_range , données_réseau ))Pour notre échantillon de données, la formule est la suivante :
=XLOOKUP(H1, A2:A4, XLOOKUP(H2, B1:E1, B2:E4))
Remarque : actuellement, XLOOKUP est une fonction bêta, qui n'est disponible que pour les abonnés d'Office 365 qui font partie du programme Office Insiders.
Comment fonctionne cette formule
La formule utilise la capacité de XLOOKUP à renvoyer une ligne ou une colonne entière. La fonction interne recherche l'année cible dans la ligne d'en-tête et renvoie toutes les valeurs pour cette année (dans cet exemple, pour l'année 1980). Ces valeurs sont placées dans le champ return_array argument du XLOOKUP externe :
XLOOKUP(H1, A2:A4, {22000;25000;700}))
La fonction XLOOKUP externe recherche l'animal cible dans les en-têtes de colonne et renvoie la valeur à la même position dans le tableau de retour.
Formule SUMPRODUCT pour la consultation à deux voies
La fonction SUMPRODUCT est comme un couteau suisse dans Excel - elle peut faire tellement de choses au-delà de son objectif désigné, surtout lorsqu'il s'agit d'évaluer des critères multiples.
Pour consulter deux critères, en lignes et en colonnes, utilisez cette formule générique :
SUMPRODUCT( vlookup_column_range = vlookup_value ) * ( hlookup_row_range = hlookup_value ), données_réseau )Pour effectuer une recherche à deux voies dans notre jeu de données, la formule est la suivante :
=SUMPRODUCT((A2:A4=H1) * (B1:E1=H2), B2:E4)
La syntaxe ci-dessous fonctionnera également :
=SUMPRODUCT((A2:A4=H1) * (B1:E1=H2) * B2:E4)
Comment fonctionne cette formule
Au cœur de la formule, nous comparons deux valeurs de référence aux en-têtes de ligne et de colonne (l'animal cible en H1 par rapport à tous les noms d'animaux en A2:A4 et l'année cible en H2 par rapport à toutes les années en B1:E1) :
(A2:A4=H1) * (B1:E1=H2)
Il en résulte 2 tableaux de valeurs VRAI et FAUX, où les VRAIS représentent les correspondances :
{FALSE;FALSE;TRUE} * {FALSE,TRUE,FALSE,FALSE}
L'opération de multiplication transforme les valeurs VRAI et FAUX en 1 et 0 et produit un tableau bidimensionnel de 4 colonnes et 3 rangées (les rangées sont séparées par des points-virgules et chaque colonne de données par une virgule) :
{0,0,0,0;0,0,0,0;0,1,0,0}
Les fonctions SUMPRODUCT multiplient les éléments du tableau ci-dessus par les éléments de B2:E4 dans les mêmes positions :
{0,0,0,0;0,0,0,0;0,1,0,0} * {22000,13800,8500,3500;25000,23000,22000,20000;700,2000,2300,2500}
Et comme la multiplication par zéro donne zéro, seul l'élément correspondant à 1 dans le premier tableau survit :
SUMPRODUCT({0,0,0,0;0,0,0,0;0,2000,0,0})
Enfin, SUMPRODUCT additionne les éléments du tableau résultant et renvoie une valeur de 2000.
Remarque : si votre tableau comporte plusieurs en-têtes de ligne et/ou de colonne portant le même nom, le tableau final contiendra plus d'un nombre différent de zéro, et tous ces nombres seront additionnés. Vous obtiendrez ainsi une somme de valeurs répondant aux deux critères. C'est ce qui différencie la formule SUMPRODUCT de INDEX MATCH et VLOOKUP, qui renvoient la première correspondance trouvée.
Recherche de matrice avec des plages nommées (Intersection explicite)
Une autre façon étonnamment simple d'effectuer une recherche matricielle dans Excel consiste à utiliser des plages nommées. Voici comment :
Partie 1 : Nommez les colonnes et les lignes
La méthode la plus rapide pour nommer chaque ligne et chaque colonne de votre tableau est la suivante :
- Sélectionnez le tableau entier (A1:E4 dans notre cas).
- Sur le Formules dans l'onglet Noms définis cliquez sur Créer à partir d'une sélection ou appuyez sur le raccourci Ctrl + Shift + F3.
- Dans le Créer des noms à partir d'une sélection sélectionnez Rangée supérieure et Colonne de gauche, et cliquez sur OK.
Cela crée automatiquement des noms basés sur les en-têtes de ligne et de colonne, mais il y a quelques réserves :
- Si les en-têtes de vos colonnes et/ou lignes sont des chiffres ou contiennent des caractères spécifiques qui ne sont pas autorisés dans les noms Excel, les noms de ces colonnes et lignes ne seront pas créés. Pour voir une liste des noms créés, ouvrez le Gestionnaire de noms ( Ctrl + F3 ). Si certains noms sont manquants, définissez-les manuellement comme expliqué dans Comment nommer une plage dans Excel.
- Si certains de vos en-têtes de ligne ou de colonne contiennent des espaces, ces derniers seront remplacés par des caractères de soulignement, par exemple, Polar_bear .
Pour notre tableau d'exemple, Excel a créé automatiquement les noms des lignes. Les noms des colonnes doivent être créés manuellement parce que les en-têtes de colonne sont des chiffres. Pour contourner ce problème, vous pouvez simplement faire précéder les chiffres de traits de soulignement, comme suit _1990 .
En conséquence, nous avons les plages nommées suivantes :
Partie 2 : Créer une formule de consultation de matrice
Pour extraire une valeur à l'intersection d'une ligne et d'une colonne données, il suffit de taper l'une des formules génériques suivantes dans une cellule vide :
= nom_de_ligne nom de la colonneOu vice versa :
= nom de la colonne nom_de_lignePar exemple, pour obtenir la population de baleines bleues en 1990, la formule est aussi simple que :
=Blue_whale _1990
Si quelqu'un a besoin d'instructions plus détaillées, les étapes suivantes vous guideront tout au long du processus :
- Dans une cellule où vous voulez que le résultat apparaisse, tapez le signe d'égalité (=).
- Commencez à taper le nom de la ligne cible, par exemple, Blue_whale Après avoir tapé quelques caractères, Excel affiche tous les noms existants qui correspondent à votre saisie. Double-cliquez sur le nom souhaité pour le saisir dans votre formule :
- Après le nom de la ligne, tapez un espace qui fonctionne comme le opérateur d'intersection dans ce cas.
- Saisissez le nom de la colonne cible ( _1990 dans notre cas).
- Dès que les noms de ligne et de colonne sont saisis, Excel met en surbrillance la ligne et la colonne correspondantes dans votre tableau, et vous appuyez sur Entrée pour compléter la formule :
Votre recherche de matrice est terminée, et la capture d'écran ci-dessous montre le résultat :
Voilà comment effectuer des recherches en lignes et en colonnes dans Excel. Je vous remercie de votre lecture et j'espère vous voir sur notre blog la semaine prochaine !
Téléchargements disponibles
Exemple de classeur de recherche bidimensionnelle