Formule Excel: retour du tableau avec la fonction INDEX -

Table des matières

Formule générique

=SUM(INDEX(range,N(IF(1,(1,2,3)))))

Sommaire

Pour que INDEX renvoie un tableau d'éléments à une autre fonction, vous pouvez utiliser une astuce obscure basée sur les fonctions IF et N. Dans l'exemple illustré, la formule en E5 est:

=SUM(INDEX(data,N(IF(1,(1,2,3)))))

où "données" est la plage nommée B5: B10.

Explication

Il est étonnamment difficile d'obtenir INDEX de renvoyer plus d'une valeur à une autre fonction. Pour illustrer, la formule suivante peut être utilisée pour renvoyer les trois premiers éléments de la plage nommée «données», lorsqu'elle est entrée sous la forme d'une formule de tableau à cellules multiples.

(=INDEX(data,(1,2,3)))

Les résultats peuvent être vus dans la plage D10: F10, qui contient correctement 10, 15 et 20.

Cependant, si nous enveloppons la formule dans la fonction SOMME:

=SUM(INDEX(data,(1,2,3)))

Le résultat final est 10, alors qu'il devrait être 45, même s'il est entré sous forme de formule matricielle. Le problème est que INDEX renvoie uniquement le premier élément du tableau à la fonction SOMME. Pour forcer INDEX à renvoyer plusieurs éléments à SUM, vous pouvez envelopper la constante de tableau dans les fonctions N et IF comme ceci:

=SUM(INDEX(data,N(IF(1,(1,2,3)))))

qui renvoie un résultat correct de 45. De même, cette formule:

=SUM(INDEX(data,N(IF(1,(1,3,5)))))

renvoie correctement 60, la somme de 10, 20 et 30.

Cette technique obscure est parfois appelée «déréférencement», car elle empêche INDEX de gérer les résultats en tant que références de cellule et de supprimer par la suite tout sauf le premier élément du tableau. Au lieu de cela, INDEX fournit un tableau complet de valeurs à SUM. Jeff Weir a une bonne explication ici sur le stackoverflow.

Note aux lecteurs: je ne sais pas exactement pourquoi cela fonctionne. Si vous pouvez fournir une explication claire, je mettrai à jour pour inclure.

Articles intéressants...