Formule Excel: exemple de recherche inversée -

Table des matières

Formule générique

=VLOOKUP(A1,CHOOSE((3,2,1),col1,col2,col3),3,0)

Sommaire

Pour inverser une RECHERCHEV - c'est-à-dire pour trouver la valeur de recherche d'origine à l'aide d'un résultat de formule RECHERCHEV - vous pouvez utiliser une formule délicate basée sur la fonction CHOOSE, ou des formules plus simples basées sur INDEX et MATCH ou XLOOKUP comme expliqué ci-dessous. Dans l'exemple illustré, la formule en H10 est:

=VLOOKUP(G10,CHOOSE((3,2,1),B5:B8,C5:C8,D5:D8),3,0)

Avec cette configuration, VLOOKUP trouve l'option associée à un coût de 3000 et renvoie "C".

Remarque: il s'agit d'un sujet plus avancé. Si vous ne faites que commencer avec RECHERCHEV, commencez ici.

introduction

Une limitation clé de VLOOKUP est qu'il ne peut rechercher que les valeurs à droite. En d'autres termes, la colonne avec les valeurs de recherche doit être à gauche des valeurs que vous souhaitez récupérer avec RECHERCHEV. En conséquence, avec la configuration standard, il n'y a aucun moyen d'utiliser RECHERCHEV pour «regarder à gauche» et inverser la recherche d'origine.

Du point de vue de RECHERCHEV, nous pouvons visualiser le problème comme ceci:

La solution de contournement expliquée ci-dessous utilise la fonction CHOOSE pour réorganiser la table dans RECHERCHEV.

Explication

À partir du début, la formule dans H5 est une formule VLOOKUP normale:

=VLOOKUP(G5,B5:D8,3,0) // returns 3000

En utilisant G5 comme valeur de recherche ("C") et les données de B5: D8 comme tableau de table, VLOOKUP effectue une recherche sur les valeurs de la colonne B et renvoie la valeur correspondante de la colonne 3 (colonne D), 3000. Remarque zéro (0) est fourni comme dernier argument pour forcer une correspondance exacte.

La formule dans G10 extrait simplement le résultat de H5:

=H5 // 3000

Pour effectuer une recherche inversée, la formule dans H10 est:

=VLOOKUP(G10,CHOOSE((3,2,1),B5:B8,C5:C8,D5:D8),3,0)

Le bit délicat est la fonction CHOOSE, qui est utilisée pour réorganiser le tableau de la table afin que Cost soit la première colonne et Option soit la dernière:

CHOOSE((3,2,1),B5:B8,C5:C8,D5:D8) // reorder table 3, 2, 1

La fonction CHOOSE est conçue pour sélectionner une valeur basée sur un index numérique. Dans ce cas, nous fournissons trois valeurs d'index dans une constante de tableau:

(3,2,1) // array constant

En d'autres termes, nous demandons la colonne 3, puis la colonne 2, puis la colonne 1. Ceci est suivi des trois plages qui représentent chaque colonne du tableau dans l'ordre dans lequel elles apparaissent sur la feuille de calcul.

Avec cette configuration, CHOOSE renvoie les trois colonnes dans un seul tableau 2D comme ceci:

(1000,"Silver","A";2000,"Gold","B";3000,"Platinum","C";5000,"Diamond","D")

Si nous visualisons ce tableau sous forme de tableau sur la feuille de calcul, nous avons:

Remarque: les en-têtes ne font pas partie du tableau et sont affichés ici à des fins de clarté uniquement.

Effectivement, nous avons permuté les colonnes 1 et 3. La table réorganisée est retournée directement à RECHERCHEV, qui correspond à 3000, et renvoie la valeur correspondante de la colonne 3, "C".

Avec INDEX et MATCH

La solution ci-dessus fonctionne bien, mais elle est difficile à recommander car la plupart des utilisateurs ne comprendront pas comment la formule fonctionne. Une meilleure solution est INDEX et MATCH, en utilisant une formule comme celle-ci:

=INDEX(B5:B8,MATCH(G10,D5:D8,0))

Ici, la fonction MATCH trouve la valeur 3000 dans D5: D8 et renvoie sa position, 3:

MATCH(G10,D5:D8,0) // returns 3

Remarque: MATCH est configuré pour une correspondance exacte en définissant le dernier argument sur zéro (0).

MATCH renvoie un résultat directement à INDEX comme numéro de ligne, donc la formule devient:

=INDEX(B5:B8,3) // returns "C"

et INDEX renvoie la valeur de la troisième ligne de B5: B8, "C".

Cette formule montre comment INDEX et MATCH peuvent être plus flexibles que VLOOKUP.

Avec XLOOKUP

XLOOKUP fournit également une très bonne solution. La formule équivalente est:

=XLOOKUP(G10,D5:D8,B5:B8) // returns "C"

Avec une valeur de recherche de G10 (3000), un tableau de recherche de D5: D8 (coûts) et un tableau de résultats de B5: B8 (options), XLOOKUP localise les 3000 dans le tableau de recherche et renvoie l'élément correspondant du tableau de résultats, "C". Étant donné que XLOOKUP effectue une correspondance exacte par défaut, il n'est pas nécessaire de définir explicitement le mode de correspondance.

Articles intéressants...