Réponses:
Microsoft explique que vous devrez peut-être utiliser une formule matricielle pour obtenir le nom de la feuille:
Pour afficher le nom de la feuille de calcul actuelle, tapez la formule suivante en tant que formule matricielle
=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 entrer cette formule en tant que formule matricielle. Pour entrer une formule en tant que formule matricielle, appuyez sur CTRL + MAJ + ENTRÉE.
Notez également que cela dépend beaucoup de la plate-forme. Sur un Mac, vous aurez besoin de différentes formules , car il utilise différents séparateurs de chemin. En outre, cela pourrait fonctionner différemment dans OpenOffice.org et d'autres alternatives. Et lorsque vous utilisez sur un classeur non enregistré, vous pouvez obtenir à la #VALUE!
place.
Lorsque vous n'utilisez pas une formule matricielle, vous pouvez obtenir le nom du classeur (la dernière partie de son nom de fichier), comme suit:
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)
Enregistrez d'abord votre fichier puis entrez cette formule n'importe où
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
;
au lieu de ,
séparer les éléments d'une fonction
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 tenir dans d'autres formules ou utiliser une seule cellule.
Je pense qu'en anglais: EXTRAEB serait MIDB, CELDA serait CELL, SI serait IF, ESERROR serait ISERROR, HALLAR serait TROUVER et, LARGO serait LONGUEUR.
C'est beaucoup mieux si vous divisez une telle formule énorme en plusieurs cellules (pour éviter d'appeler la même fois plusieurs fois):
=CELDA("filename")
=1+HALLAR("]";<CellReferenceFor_1>)
=3+HALLAR("'#$";<CellReferenceFor_1>)
=ESERROR(<CellReferenceFor_2>;)
=ESERROR(<CellReferenceFor_3>;)
=EXTRAEB(<CellReferenceFor_1>;SI(<CellReferenceFor_4>;SI(<CellReferenceFor_5>;0;<CellReferenceFor_5>);<CellReferenceFor_4>);LARGO(<CellReferenceFor_1>))
Pourquoi diable obtenir le nom de la feuille est si compliqué, alors que la position de la feuille sur la liste des feuilles est si facile sur une feuille de calcul moderne (attention, sur EXCEL 2000 celui-ci n'existe pas): =HOJA(A1)
Et une autre chose: pourquoi les fonctions sont appelées différentes dans chaque langue, que se passe-t-il si j'ai M $ EXCEL est l'espagnol et CALC en anglais (pour ne pas dire le russe, le chinois, etc.)? quel travail acharné, besoin de se souvenir de tous les noms de fonction sur les idiomes multipliés.
En interne, ils sont enregistrés avec des noms spécifiques, par exemple =SHEET(A1)
identiques à ceux =HOJA(A1)
enregistrés sous =_xlfn.SHEET(A1)
; pourquoi ne pas utiliser sur tous les idiomes le dernier?.
Ou dit sous une autre forme: pourquoi si je le mets en anglais, il dit que ce n'est pas le nom de la fonction vaild (si CALC / M $ EXCEL n'est pas en anglais)?
Avec M $ ACCESS et les fonctions SQL qui ne se produisent pas, sur la version espagnole je peux les taper sur l'espagnol ESNULO()
et sur l'anglais ISNULL()
et ça le prend correctement.
S'il est trop compliqué d'accepter les deux; eh bien, alors n'en accepter qu'un, ne pas localiser pour multiplier les idoles!
Eh bien, pour revenir à la question, l'astuce que j'utilise sur cette énorme formule est de tester si elle ]
existe (M $ EXCEL), sinon de tester si elle existe '#$
(LibreOffice CALC) lors de l'extraction du nom =CELL("filename")
. C'est tellement bizarre!
Encore une fois avec des questions sarcastiques: pourquoi ont-ils ajouté =SHEET(A1)
et non =SHEETNAME(A1)
? Cela rend le travail plus difficile pour nous tous!
Sur LibreOffice, j'ai mélangé votre formule comme suit, et le nombre 20 vers la fin sera la limite sur les caractères qui seront affichés:
= (SUBSTITUTE (MID ((DROITE (CELLULE ("nom de fichier"), LEN (CELLULE ("nom de fichier"))) - MAX (SI (PAS (ISERR (RECHERCHE ("\", CELLULE ("nom de fichier"), LIGNE (1) : 255: 255)))), RECHERCHE ("\", CELLULE ("filename"), ROW (1: 255: 255))))))), FIND ("# $", (RIGHT (CELL ("filename "), LEN (CELL (" filename ")) - MAX (IF (NOT (ISERR (SEARCH (" \ ", CELL (" filename "), ROW (1: 255: 255)))), SEARCH (" \ ", CELL (" nom de fichier "), ROW (1: 255: 255))))))) + 2,20), 1,1))