web-dev-qa-db-fra.com

Utiliser la valeur de chaîne d'une cellule pour accéder à une feuille de travail du même nom

J'ai 2 feuilles de calcul: Summary et SERVER-ONE.

En cellule A5 sur la fiche de synthèse, j'ai ajouté la valeur SERVER-ONE.

A côté, dans la cellule B5, Je voudrais une formule qui utilise la valeur dans A5 pour afficher la valeur de G7 dans la feuille de calcul du même nom (SERVER-ONE).

Je pourrais utiliser manuellement:

='SERVER-ONE'!G7

Cependant, j'aimerais que ce soit dynamique, afin que je puisse facilement ajouter plus de feuilles de calcul.

J'ai essayé l'évidence sans joie:

='A5'!G7

Aucune suggestion?

45
KingBob

Vous pouvez utiliser la formule INDIRECT().

Cela prend essentiellement une chaîne et la traite comme une référence. Dans votre cas, vous utiliseriez:

=INDIRECT("'"&A5&"'!G7")

Les guillemets doubles doivent montrer que ce qui est à l’intérieur sont des chaînes, et seulement A5 voici une référence.

88
Jerry

Vous avez besoin de la fonction INDIRECT:

=INDIRECT("'"&A5&"'!G7")
12
JosieP

je ne sais pas si vous avez résolu votre question, mais j’ai trouvé que cela fonctionnait pour incrémenter le nombre de lignes lors du glissement.

= INDIRECT("'"&$A$5&"'!$G"&7+B1)

Où B1 désigne un numéro d'index, commençant à 0.

Ainsi, si vous copiez-déplacez la cellule d'index et la cellule contenant la formule indirecte, vous augmenterez la valeur indirecte. Vous pourriez également créer un compteur plus élégant avec la fonction Index.

J'espère que cela t'aides.

5
Adrian

Voici une solution utilisant INDIRECT, qui, si vous faites glisser la formule, sélectionnera différentes cellules de la feuille cible en conséquence. Il utilise la notation R1C1 et ne se limite pas à travailler uniquement sur les colonnes A à Z.

=INDIRECT("'"&$A$5&"'!R"&ROW()&"C"&COLUMN(),FALSE)

Cette version prend la valeur de la cellule cible correspondant à la cellule où la formule est placée. Par exemple, si vous placez la formule dans "Résumé"! B5, elle récupérera la valeur de "SERVEUR-ONE"! B5 et non de "SERVEUR-ONE"! G7 comme spécifié dans la question d'origine. Mais vous pouvez facilement ajouter des décalages à la ligne et à la colonne pour obtenir le mappage souhaité dans tous les cas.

4
John Barber

En utilisant la fonction ROW(), je peux faire glisser cette formule verticalement. Il peut également être déplacé horizontalement puisqu'il n'y a pas de $ avant le D.

= INDIRECT("'"&D$2&"'!$B"&ROW())

Ma mise en page comporte des noms de feuille dans les en-têtes de colonne (B2, C2, D2, etc.) et mappe plusieurs valeurs de ligne de la colonne B de chaque feuille.

3
LJW

INDIRECT est la fonction que vous souhaitez utiliser. Ainsi:

=INDIRECT("'"&A5&"'!G7")

Avec INDIRECT, vous pouvez construire votre formule sous forme de chaîne de texte.

2
Dave Sexton

Guess @ user3010492 l'a testé mais je l'ai utilisé avec une cellule fixe A5 -> $ A 5 et un élément fixe du G7 -> $ G7

=INDIRECT("'"&$A$5&"'!$G7")

Fonctionne également bien dans une autre formule si vous la mettez entre parenthèses.

1
Kriskros

Cela ne fonctionnera que sur la colonne Z, mais vous pouvez le faire glisser horizontalement et verticalement.

=INDIRECT("'"&$D$2&"'!"&CHAR((COLUMN()+64))&ROW())
0
AxelC