web-dev-qa-db-fra.com

Quelle formule Excel renvoie le nom de la feuille?

J'ai recherché la documentation de la fonction Excel et la recherche générale MSDN, mais je n'ai pas trouvé de moyen de renvoyer le nom de la feuille sans VBA.

Existe-t-il un moyen d'obtenir le nom de la feuille dans une formule Excel sans avoir besoin de recourir à VBA?

18
SilS

Pas très bien avec Excel, mais j'ai trouvé ces ici

=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)

et A1 peut être n'importe quelle cellule sans erreur de la feuille.
Pour le chemin d'accès complet et le nom de la feuille, utilisez

=CELL("filename",A1)
15
Travis

Pour les versions récentes d'Excel, la syntaxe de la formule est:

=MID(CELL("filename";A1);FIND("]";CELL("filename";A1))+1;255)
4
Orbit

Voici un raisonnablement court qui a quelques avantages supplémentaires:

  • Effectue une recherche inversée (la plupart des autres réponses vont dans le mauvais sens) en utilisant la fonction REPT souvent ignorée.
  • A1 Semble être un mauvais choix car il y a beaucoup plus de chance qu'il errors par rapport à ... $FZZ$999999.
  • N'oubliez pas d'absolu. Copier et coller certains des autres exemples peut provoquer une erreur en raison de modifications référentielles.
  • Le ? Est intentionnel car cela ne devrait pas être dans le chemin du fichier.

=SUBSTITUTE(RIGHT(SUBSTITUTE(CELL("Filename",$FZZ$999999), "]",REPT("?", 999)), 999),"?","")

3
PGSystemTester

Ce qui suit isolera le nom de la feuille:

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
3
ADrunkenMan

Aucune des formules données dans d'autres réponses ne prend en charge la casse s'il y a du caractère] dans le chemin de fichier.

La formule ci-dessous est plus complexe, mais elle peut gérer de tels cas correctement:

 =MID(CELL("filename",A1),FIND("]",CELL("filename",A1),FIND("?",SUBSTITUTE(CELL("filename",A1),"\","?",LEN(CELL("filename",A1))-LEN(SUBSTITUTE(CELL("filename",A1),"\","")))))+1,LEN(CELL("filename",A1)))
2
mielk

J'avais un module déjà ouvert alors j'ai fait une fonction personnalisée:

Public Function Sheetname (ByRef acell as Range) as string
Sheetname = acell.Parent.Name 
End Function 
1
Branston Crumble

Avait un crochet carré "]" dans le nom du fichier, il fallait donc modifier la formule ci-dessus comme suit pour trouver la dernière occurrence du crochet carré. Vérifié que cela fonctionne pour 0,1 ou plusieurs crochets dans le nom/chemin du fichier.

=RIGHT(CELL("filename"),LEN(CELL("filename")) - FIND("]]]",SUBSTITUTE(CELL("filename"),"]","]]]",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"]","")))))
  1. Remplace tous les crochets à l'aide de la fonction de substitution, puis compare la longueur du résultat avec la longueur du nom de fichier pour identifier le nombre de crochets dans le nom de fichier.
  2. Utilise le nombre d'occurrences de crochets pour remplacer le dernier crochet par 3 crochets séquentiels ']]]'
  3. Utilise la fonction Rechercher pour identifier l'emplacement des 3 crochets dans la chaîne
  4. Soustrait l'emplacement des 3 crochets de la longueur du chemin complet
  5. Utilise le résultat pour obtenir le plus de caractères (étant le nom de la feuille)

Le commentaire précédent ci-dessus sur l'enregistrement du classeur en premier est également une clé, car sinon vous recevrez la #Valeur! résultat.

0
Jokey