Est-il possible d'obtenir le nom de la feuille?

Comment puis-je obtenir le nom de la feuille dans une cellule? (J'ai plus d'une feuille, je veux recevoir le courant sur chaque feuille)

Microsoft explique que vous devrez utiliser une formule de tableau pour obtenir le nom de la feuille:

Pour afficher le nom de la feuille de calcul en cours, tapez la formule suivante comme formule de tableau

=RIGHT(CELL("filename"),LEN(CELL("filename"))- MAX(IF(NOT(ISERR(SEARCH("\",CELL("filename"), ROW(1:255)))),SEARCH("\",CELL("filename"),ROW(1:255))))) 

Où "nom de fichier" est littéralement le mot "nom de fichier", entre guillemets.

REMARQUE: vous devez saisir cette formule comme une formule de tableau. Pour saisir une formule en tant que formule de tableau, appuyez sur CTRL + MAJ + ENTRÉE.

Notez également que cela dépend beaucoup de la plate-forme. Sur un Mac, vous aurez besoin de formules différentes , car il utilise différents séparateurs de chemin. En outre, il pourrait fonctionner différemment dans OpenOffice.org et d'autres alternatives. Et lorsque vous utilisez un classeur non enregistré, vous pouvez obtenir #VALUE! au lieu.

Lorsque vous n'utilisez pas une formule de tableau, vous pouvez obtenir le nom du classeur (la dernière partie de son nom de fichier), de la manière suivante:

Pour renvoyer le nom du classeur uniquement, comme utilisé dans la formule suivante:

 =MID(CELL("filename"),SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1) 

Voici une formule.

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

( Lien vers plus d'informations )

Tout d'abord, enregistrez votre fichier en entrant dans cette formule n'importe où

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

Testé et fonctionne sur M $ EXCEL et LibreOffice CALC (la formule est en espagnol):

 =EXTRAEB(CELDA("filename");SI(ESERROR(1+HALLAR("]";CELDA("filename")));SI(ESERROR(3+HALLAR("'#$";CELDA("filename")));0;3+HALLAR("'#$";CELDA("filename")));1+HALLAR("]";CELDA("filename")));LARGO(CELDA("filename"))) 

Remarque: Il s'agit d'une énorme formule pour s'adapter à d'autres formules ou utiliser une seule cellule.

Je pense en anglais: EXTRAEB serait MIDB, CELDA serait CELL, SI serait IF, ESERROR serait ISERROR, HALLAR serait TROUVER et, LARGO serait LENGTH.

Il est beaucoup mieux si vous divisez cette énorme formule en plusieurs cellules (pour éviter d'appeler la même fois):

  1. =CELDA("filename")
  2. =1+HALLAR("]";<CellReferenceFor_1>)
  3. =3+HALLAR("'#$";<CellReferenceFor_1>)
  4. =ESERROR(<CellReferenceFor_2>;)
  5. =ESERROR(<CellReferenceFor_3>;)
  6. =EXTRAEB(<CellReferenceFor_1>;SI(<CellReferenceFor_4>;SI(<CellReferenceFor_5>;0;<CellReferenceFor_5>);<CellReferenceFor_4>);LARGO(<CellReferenceFor_1>))

Pourquoi le nom de la feuille d'arrivée est tellement compliqué, tout en obtenant la position de la feuille sur la liste des feuilles est si simple sur une feuille de calcul moderne (avertissement, sur EXCEL 2000, celle-ci n'existe pas): =HOJA(A1)

Et une autre chose: pourquoi les fonctions sont appelées différentes sur chaque langue, que faire si j'ai M $ EXCEL est l'espagnol et la CALC en anglais (pour ne pas dire russes, Chinesse, etc.)? Quel travail acharné, il faut se souvenir de tous les noms de fonctions pour multiplier les expressions idiomatiques.

En interne, ils sont sauvegardés avec des noms spécifiques, par exemple =SHEET(A1) qui est identique à =HOJA(A1) est sauvegardé comme =_xlfn.SHEET(A1) ; Pourquoi ne pas utiliser sur tous les idiomes le dernier ?.

Ou dit sous une autre forme: pourquoi si je l'ai mis en anglais, il dit que ce n'est pas le nom de la fonction vaild (si CALC / M $ EXCEL n'est pas sur l'anglais)?

Avec les fonctions M $ ACCESS et SQL qui ne se produisent pas, sur la version espagnole, je peux les taper sur ESNULO() espagnol ESNULO() et sur l'anglais ISNULL() et cela le prend correctement.

S'il est trop compliqué d'accepter les deux; Eh bien, n'acceptez qu'un seul, ne localisez pas pour multiplier les idoms!

Eh bien, répondu à la question, l'astuce que j'utilise sur cette formule énorme est de tester si ] existe (M $ EXCEL), sinon teste si existe '#$ (LibreOffice CALC) tout en extrayant le nom de =CELL("filename") . C'est tellement bizarre!

Encore une fois avec des questions sarcastiques: Pourquoi ont-ils ajouté =SHEET(A1) et non =SHEETNAME(A1) ? Cela nous rend plus laborieux!

Sur LibreOffice, j'ai mélangé votre formule dans la suite, et le numéro 20 vers la fin sera la limite sur les caractères qui seront affichés:

= (SUBSTITUTE (MID ((RIGHT (CELL ("filename"), LEN (CELL ("filename")) – MAX (IF (NOT (ISERR (SEARCH ("\", CELL ("filename"), ROW (1 : 255: 255)))), SEARCH ("\", CELL ("filename"), ROW (1: 255: 255)))))), FIND ("# $", (DROIT (CELL ("nom de fichier "), LEN (CELL (" nom de fichier ")) – MAX (IF (NOT (ISERR (SEARCH (" \ ", CELL (" filename "), ROW (1: 255: 255)))), SEARCH (" \ ", CELL (" filename "), ROW (1: 255: 255))))))) + 2,20), 1,1))