Formule Excel: Incrémenter la référence de cellule avec INDIRECT -

Formule générique

=INDIRECT(sheet&"!"&CELL("address",A1))

Sommaire

Pour incrémenter une référence créée sous forme de texte dans la fonction INDIRECT, vous pouvez utiliser la fonction CELL. Dans l'exemple illustré, la formule en D5 est:

=INDIRECT($B$5&"!"&CELL("address",A1))

Quels incréments à mesure que la formule est copiée.

Explication

Considérez une simple référence dynamique à Sheet2 en utilisant INDIRECT dans une formule comme celle-ci:

=INDIRECT($B$5&"!"&"A1"))

Si nous changeons le nom de la feuille dans B5 en un autre nom (valide), INDIRECT renverra une référence à A1 dans la nouvelle feuille.

Cependant, si nous copions cette formule dans la colonne, la référence à A1 ne changera pas, car "A1" est codé en dur sous forme de texte.

Pour résoudre ce problème, nous utilisons la fonction CELL pour générer une référence de texte à partir d'une référence de cellule régulière:

CELL("address",A1)

Avec "adresse" comme premier argument et A1 comme deuxième argument, la fonction CELL renvoie une chaîne comme "$ A $ 1". Étant donné que A1 est une référence de cellule régulière, il s'incrémentera normalement lorsque la formule est copiée dans la colonne. Le résultat dans D5: D9 est une série de formules comme celle-ci:

=INDIRECT("Sheet2!$A$1") =INDIRECT("Sheet2!$A$2") =INDIRECT("Sheet2!$A$3") =INDIRECT("Sheet2!$A$4") =INDIRECT("Sheet2!$A$5")

Dans chaque cas, INDIRECT résout chaque chaîne de texte en une référence et Excel renvoie la valeur à la cellule donnée dans Sheet2.

Remarque: INDIRECT et CELL sont des fonctions volatiles et recalculées à chaque changement de feuille de calcul. Cela peut entraîner des problèmes de performances dans les feuilles de calcul plus complexes.

Articles intéressants...