Comment faire une référence relative à un autre classeur dans Excel?
Je suis à produire une feuille de calcul des prix. La feuille a une référence à plusieurs autres classeurs pour obtenir les prix pour les différents composants. Cela fonctionne très bien sur mon ordinateur mais quand je les déplacer vers le serveur ou un autre ordinateur, il ne peut pas trouver les références.
Mon dossier est structuré comme:
Folder
|-- prices.xlsx
|-- Fixed Components
| |-- ComponentsA.xlsx
| +-- ComponentsB.xlsx
|
+-- Variable Components
|-- ComponentsC.xlsx
+-- ComponentsD.xlsx
prices.xlsx
est la feuille principale que les références les autres feuilles. Sur mon ordinateur, il construit les références avec un chemin absolu, de sorte que quand je copie les fichiers du chemin reste fixe à ma machine, au lieu de référencer les fichiers sur l'autre PC.
Est-il possible de faire les références relatives, de sorte que je puisse le mettre dans la feuille principale quelque chose comme ='\Variable Components\[ComponentsC.xlsx]Sheet1'!A1
. Je ne voudrais pas utiliser VBA pour cela que les gens n'ont pas tendance à faire confiance aux Macros et ensuite se plaindre que les fonctions ne fonctionnent pas.
source d'informationauteur Stijnvdk
Vous devez vous connecter pour publier un commentaire.
Les seules solutions que j'ai vu pour organiser les fichiers dans des sous-dossiers a nécessité l'utilisation de VBA pour résoudre un chemin d'accès complet vers le fichier externe dans les formules. Voici un lien vers un site avec plusieurs exemples, d'autres ont utilisé:
http://www.teachexcel.com/excel-help/excel-how-to.php?i=415651
Alternativement, si vous pouvez placer tous les fichiers dans le même dossier, au lieu de les diviser en sous-dossiers, puis Excel résoudre les références externes sans nécessiter l'utilisation de VBA même si vous déplacez les fichiers vers un emplacement réseau. Vos formules deviennent alors simplement
='[ComponentsC.xlsx]Sheet1'!A1
sans les noms de dossier pour le traverser.J'ai eu un problème similaire que j'ai résolu en utilisant la séquence suivante:
utiliser le
CELL("filename")
fonction permettant d'obtenir le chemin d'accès complet à la feuille en cours du fichier en cours.utiliser le
SEARCH()
fonction pour trouver le début de la [nom de fichier]SheetName chaîne de votre fichier excel et la feuille.utiliser le
LEFT
fonction pour extraire le nom de chemin complet du répertoire qui contient votre fichier actuel.Concaténer le chemin d'accès au répertoire nom trouvé dans l'étape #3 avec le nom du fichier, le nom de la feuille de calcul, et la référence de la cellule à laquelle vous souhaitez accéder.
utiliser le
INDIRECT()
fonction pour accéder à l'CellPathName
que vous avez créé à l'étape #4.Remarque: ces étapes peuvent également être utilisés pour accéder à des cellules dans des fichiers dont les noms sont créés dynamiquement. Dans l'étape #4, utilisez une chaîne de texte est créé dynamiquement à partir du contenu des cellules, la date ou l'heure actuelle, etc. etc.
Une référence de cellule (chaque pièce assemblés séparément) qui comprend l'ensemble de ces étapes est:
Noter que LibreOffice utilise un peu différente CellPatnName syntaxe, comme dans l'exemple suivant:
plus facile & plus court via indirects:
INDIRECT("'..\..\..\..\Supply\SU\SU.ods'#$Data.$A$2:$AC$200")
cependant indirects() a des performances des inconvénients si beaucoup de liens dans le classeur
Je m'ennuie de construction comme:
['../Data.ods']#Sheet1.A1
dans LibreOffice. L'intention est ici: si je crée un tas de maître classeurs et en fonction du rapport des classeurs limitée et dans la sous-arborescence de répertoires dans le fichier source du système, je peux zip ensemble de l'arborescence du répertoire avec le paquet complet de classeurs et de l'envoyer à d'autres coopérants personne, par Courriel ou par. Il sera enregistré dans certains autres absolue pazth sur le système cible, mais le lien fonctionne à nouveau en chemin absolu parce qu'il a été codé relativement à la racine du sous-arbre.L'aide d' =worksheetname() et =Indirect() de la fonction, et les noms des feuilles de calcul d'un parent fichier Excel avec le nom de la référence externe fichier Excel. Chaque référencés fichier excel étaient dans leurs propres dossiers avec le même nom. Ces sous-dossiers ont été seulement de créer plus de clarté.
Ce que j'ai fait a été comme suit:-
|----La Colonne B--------------- | ----La Colonne C------------|
R2) dossier Parent --------> "C:\TEMP\Excel\"
R3) Sous le nom de dossier ---> =worksheetname()
R5) chemin d'accès Complet --------------> ="'"&C2&C3&"["&C3&".xlsx]Feuil1'!$$1"
R7) Indirecte de la fonction-----> =INDIRECT(C5,TRUE)
Dans le fichier principal, j'ai dû dire, 5 feuilles de calcul étiquetés comme Ext-1 Ext-2, Ext-3 Ext-4, Ext-5. Copier coller les formules ci-dessus dans tous les cinq feuilles de calcul. Ouvert tous les nommés respectivement les fichiers Excel en arrière-plan. Pour une raison quelconque, les résultats n'ont pas été automatiquement l'informatique, ils ont dû forcer un changement par l'édition d'une cellule. Volla, la valeur de la cellule A1 de chaque référencés fichier Excel ont été dans le fichier Principal.
Présumer que vous reliant à un lecteur partagé par exemple le S lecteur? Si oui, d'autres personnes peuvent avoir connecté le lecteur différemment. Vous avez probablement besoin d'utiliser le "officielle" nom du disque //euhkj002/prévisions/bla bla. Au lieu de S//dans votre lien