web-dev-qa-db-fra.com

Référence à la valeur dans un classeur Excel fermé avec INDIRECT?

Je veux faire référence à une valeur de cellule dans un autre classeur closed avec une formule (pas VBA!). Le le nom de la feuille est stocké sous forme de variable} (dans l'exemple suivant, C13 est "Feuille2").

Si l'autre fichier est ouvert, alors les travaux suivants:

=INDIRECT("[myExcelFile.xlsm]" & C13 & "!$A$1")

Si le fichier est fermé, la formule ci-dessus ne fonctionne pas car il n'y a pas de chemin absolu. Mais je dois travailler avec ce qui suit (prêter attention à 'au lieu de ":

='C:\data\[myExcelFile.xlsm]Sheet2'!$A$1

Maintenant, je souhaite remplacer la "Feuille2" codée en dur par une valeur de référence dynamique, c'est-à-dire C13 (comme indiqué dans le premier extrait de code).

Est-ce que quelqu'un connaît une solution sans utiliser VBA ou d'autres bibliothèques?

9
Chris

Il n'y a définitivement aucun moyen de le faire avec des formules standard. Cependant, une sorte de réponse folle peut être trouvée ici . Cela évite toujours VBA, et cela vous permettra d’obtenir votre résultat de manière dynamique.

  1. Commencez par créer la formule qui générera votre formule, mais n’ajoutez pas le = au début! 

  2. Supposons que vous ayez créé cette formule dans la cellule B2 de Sheet1 et que vous souhaitiez que la formule soit évaluée dans la colonne c.

  3. Maintenant, allez dans l'onglet Formules et choisissez "Définir le nom". Donnez-lui le nom myResult (ou celui que vous choisissiez), et sous Se réfère à, écrivez =evaluate(Sheet1!$B2) (remarquez le $

  4. Enfin, allez à C2 et écrivez =myResult. Faites glisser le curseur vers le bas et ... le tour est joué!

10
Ben I.

Vérifier la fonction INDEX:

=INDEX('C:\path\[file.xlsm]Sheet1'!A10:B20;1;1)
0
Daniel Silva

= INDIRECT ("'C:\Data [" & A8 & "] SheetNAME"! $ G9 ")

où A8 contient myExcelFile.xlsm

et G9 contient les précieuses données de votre classeur source.

0
Allan

Dans Excel 2016 au moins, vous pouvez utiliser INDIRECT avec une référence de chemin d'accès complète. la référence complète (y compris le nom de la feuille) doit être entourée de ' caractères.

Donc, cela devrait fonctionner pour vous:

= INDIRECT("'C:\data\[myExcelFile.xlsm]" & C13 & "'!$A$1")

Notez le ' de fermeture dans la dernière chaîne (c'est-à-dire '!$A$1 entouré de "")

0
Luke Warneminde

Le problème est qu’un lien vers un fichier fermé fonctionne avec index (mais pas avec index (indirect (

Il me semble que c’est un problème de programmation de la fonction d’indexation… .. Je l’ai résolu avec une ligne de clause if

C2=sheetname
if(c2=Sheet1,index(sheet1....),if(C2="Sheet2",index(sheet2....

Je l'ai fait sur cinq feuilles, c'est une longue formule, mais je fais ce dont j'ai besoin.

0
Philipp