
Formule générique
=INDEX(CHOOSE(number,array1,array2),MATCH(value,range,0))
Sommaire
Pour configurer une formule INDEX et MATCH où le tableau fourni à INDEX est variable, vous pouvez utiliser la fonction CHOOSE. Dans l'exemple illustré, la formule en I5, copiée vers le bas, est:
=INDEX(CHOOSE(H5,Table1,Table2),MATCH(G5,Table1(Model),0),2)
Avec Table1 et Table2 comme indiqué dans la capture d'écran.
Explication
Au fond, il s'agit d'une fonction INDEX et MATCH normale:
=INDEX(array,MATCH(value,range,0))
Où la fonction MATCH est utilisée pour trouver la ligne correcte à renvoyer à partir du tableau, et la fonction INDEX renvoie la valeur de ce tableau.
Cependant, dans ce cas, nous voulons rendre la variable tableau, de sorte que la plage donnée à INDEX puisse être modifiée à la volée. Nous faisons cela avec la fonction CHOOSE:
CHOOSE(H5,Table1,Table2)
La fonction CHOOSE renvoie une valeur d'une liste en utilisant une position ou un index donné. La valeur peut être une constante, une référence de cellule, un tableau ou une plage. Dans l'exemple, l'index numérique est fourni dans la colonne H. Lorsque le numéro d'index est 1, nous utilisons Table1. Lorsque l'index est 2, nous alimentons Table2 en INDEX:
CHOOSE(1,Table1,Table2) // returns Table1 CHOOSE(2,Table1,Table2) // returns Table2
Remarque: les plages fournies à CHOOSE n'ont pas besoin d'être des tables ou des plages nommées.
Dans I5, le nombre dans la colonne H est 1, donc CHOOSE renvoie Table1, et la formule se résout en:
=INDEX(Table1,MATCH("A",Table1(Model),0),2)
La fonction MATCH renvoie la position de «A» dans Table1, qui est 1, et INDEX renvoie la valeur à la ligne 1, colonne 2 de Table1, qui est de 20,00 $
=INDEX(Table1,1,2) // returns $20.00