web-dev-qa-db-fra.com

Plage de graphique dynamique utilisant INDIRECT: cette fonction n'est pas valide (malgré la plage en surbrillance)

J'essaie de créer un graphique avec une plage construite de manière dynamique à l'aide de la fonction INDIRECT. Excel reconnaît la plage que je crée en utilisant INDIRECT car il met en évidence la plage correspondante sur la feuille:

enter image description here

Cependant, lors de la sauvegarde du graphique, un message d'erreur indiquant que la fonction n'est pas valide s'affiche:

enter image description here

Quelqu'un sait-il quel est le problème/comment créer une plage de graphique dynamique allant d'un point de départ à un point final?

PS: Vous pouvez télécharger la feuille de calcul ci-dessus ici . La formule que j'utilisais:
=INDIRECT("sheet!"&E2&":"&E3)

25
Max

La mienne ressemble à l'excellente réponse de Sean, mais permet un jour de début et de fin. Commencez par créer deux plages nommées utilisant des formules Index/Match pour choisir les jours de début et de fin en fonction de E2 et E3:

rngDay

=INDEX(Sheet1!$A:$A,MATCH(Sheet1!$E$2,Sheet1!$A:$A,0)):INDEX(Sheet1!$A:$A,MATCH(Sheet1!$E$3,Sheet1!$A:$A,0))

rngValue

=INDEX(Sheet1!$B:$B,MATCH(Sheet1!$E$2,Sheet1!$A:$A,0)):INDEX(Sheet1!$B:$B,MATCH(Sheet1!$E$3,Sheet1!$A:$A,0))

Vous pouvez ensuite cliquer sur la série dans le graphique et modifier la formule pour:

=SERIES(Sheet1!$B$1,Sheet1!rngDay,Sheet1!rngValue,1)

enter image description here

Voici un article de Nice Chandoo sur l'utilisation des plages dynamiques dans les graphiques.

15
Doug Glancy

La façon dont vous essayez de le faire n'est pas possible. La plage de données du graphique doit avoir une adresse fixe.

Il y a un moyen de contourner cela, et c'est d'utiliser des plages nommées.

Placez le nombre de lignes que vous souhaitez dans vos données dans une cellule (par exemple, E1).
Donc, en utilisant votre exemple, je mets Number of Rows dans D1 et 6 dans E1  

Dans le gestionnaire de noms, définissez les noms de vos données et titres.
J'ai utilisé xrange et yrange, et les ai définis comme suit: 

xrange: = OFFSET (Sheet1! $ A 2,0,0,0 $, Sheet1! $ E $ 1)
yrange: = OFFSET (Feuille1! $ B 2,0,0,0 $, Feuille1! $ E $ 1) 

maintenant, à votre graphique - vous devez connaître le nom du classeur (une fois que vous l'avez configuré, la fonction de suivi des modifications d'Excel s'assurera que la référence reste correcte, quel que soit le nom renommé).

Laissez le Chart data range vide
pour Legend Entries (Series), entrez le titre comme d'habitude, puis le nom que vous avez défini pour les données (notez que le nom du classeur est required pour utiliser des plages nommées).
data points

pour Horizontal (Category) Axis Labels, entrez le nom que vous avez défini pour les étiquettes
data labels

maintenant, en changeant le nombre dans E1, vous verrez le graphique changer:
6 in E14 in E1

20
SeanC

Selon la formule que vous avez indiquée: = INDIRECT ("sheet!" & E2 & ":" & E3) Vous ne nommez pas la feuille correctement.

J'aurais pensé que ce serait Sheet1! ou Sheet2! etc . Votre formule résout en = feuille! E2: E3 qui n'est pas une adresse valide. Le message d'erreur que vous obtenez signifie que Excel ne peut pas résoudre l'entrée INDIRECT. INDIRECT est une fonction valide, donc l'argument que vous lui proposez doit être invalide.

Toutes les réponses ci-dessus qui indiquent le nom de la feuille ont corrigé votre erreur mais ne la mentionnent pas ...;)

0
KiwiSteve

J'utilise OFFSET pour créer une formule de nom défini afin de pouvoir définir toutes les plages pour les données, ce qui me permet d'avoir une date de début (ou la position de début et de fin de tout jeu de données).

Pour un graphique simple, je définis le nom CategoryLabels comme suit:

= OFFSET($A$5;  (InicitialMonth-1);  0;  LastMonth - (InitialMonth-1))

et DataCars comme suit:

= OFFSET($B$5;  (InicitialMonth-1);  0;  LastMonth - (InitialMonth-1))

Vous devrez définir autant de noms que de séries que vous souhaitez inclure, en suivant la même procédure. Dans ce cas simple, je n'ai inclus que les ventes de voitures.

Le mois initial et le dernier mois sont des noms de plage définis pour des cellules individuelles, utilisés pour indiquer les mois du graphique à inclure (mois de début à mois de fin).

N'oubliez pas, comme l'ont expliqué Sean Cheshire et d'autres, que pour utiliser les noms des valeurs de graphique, le nom de la feuille de calcul doit être inclus.

0
Luis G. Rodriguez

La formule nommée avec des fonctions indirectes ne fonctionne pas dans les graphiques. Cela fonctionne dans d'autres sources lorsque la source dynamique souhaitée est mise en surbrillance, mais si vous la visualisez sous forme de graphique, elle ne sera pas évaluée. J'espère que Microsoft a corrigé cela.

0
Phil Cheesesteak