Antworten:
Microsoft erklärt, dass Sie möglicherweise eine Array-Formel verwenden müssen, um den Blattnamen abzurufen:
Geben Sie die folgende Formel als Matrixformel ein, um den Namen des aktuellen Arbeitsblatts anzuzeigen
=RIGHT(CELL("filename"),LEN(CELL("filename"))- MAX(IF(NOT(ISERR(SEARCH("\",CELL("filename"), ROW(1:255)))),SEARCH("\",CELL("filename"),ROW(1:255)))))
Wobei "Dateiname" wörtlich "Dateiname" in Anführungszeichen steht.
HINWEIS: Sie müssen diese Formel als Matrixformel eingeben. Drücken Sie STRG + UMSCHALT + EINGABETASTE, um eine Formel als Matrixformel einzugeben.
Beachten Sie auch, dass dies sehr plattformabhängig ist. Auf einem Mac benötigen Sie unterschiedliche Formeln , da unterschiedliche Pfadtrennzeichen verwendet werden. In OpenOffice.org und anderen Alternativen funktioniert es möglicherweise auch anders. Und wenn Sie eine nicht gespeicherte Arbeitsmappe verwenden, erhalten Sie möglicherweise #VALUE!
stattdessen.
Wenn Sie keine Array-Formel verwenden, erhalten Sie möglicherweise den Namen der Arbeitsmappe (den letzten Teil des Dateinamens) wie folgt:
So geben Sie nur den Namen der Arbeitsmappe zurück, wie er in der folgenden Formel verwendet wird:
=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)
Hier ist eine Formel.
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
Speichern Sie zuerst Ihre Datei, bevor Sie diese Formel irgendwo eingeben
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
;
anstatt ,
die Elemente einer Funktion zu
Getestet und funktioniert mit M $ EXCEL und LibreOffice CALC (Formel ist in Spanisch):
=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")))
Hinweis: Es ist eine große Formel, die in andere Formeln passt oder nur eine Zelle verwendet.
Ich denke in Englisch: EXTRAEB wäre MIDB, CELDA wäre CELL, SI wäre IF, ESERROR wäre ISERROR, HALLAR wäre FIND und LARGO wäre LENGTH.
Es ist viel besser, wenn Sie eine so große Formel in mehrere Zellen aufteilen (um zu vermeiden, dass dieselbe Formel mehrmals aufgerufen wird):
=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>))
Warum zum Teufel ist das Abrufen des Blattnamens so kompliziert, während das Abrufen der Blattposition in der Blattliste in modernen Tabellenkalkulationen so einfach ist (Warnung, in EXCEL 2000 gibt es diese nicht): =HOJA(A1)
Und noch etwas: Warum werden Funktionen in jeder Sprache anders aufgerufen? Was ist, wenn M $ EXCEL Spanisch und CALC in Englisch ist (nicht Russisch, Chinesse usw.)? Was für eine harte Arbeit, müssen Sie sich alle Funktionsnamen auf multiplizieren Redewendungen merken.
Intern werden sie mit bestimmten Namen gespeichert, z. B. =SHEET(A1)
so wie =HOJA(A1)
gespeichert als =_xlfn.SHEET(A1)
; warum nicht für alle Redewendungen die letzte verwenden?
Oder in einer anderen Form gesagt: Warum, wenn ich es auf Englisch sage, ist es kein gültiger Funktionsname (wenn CALC / M $ EXCEL nicht auf Englisch ist)?
Mit M $ ACCESS und SQL-Funktionen, die nicht vorkommen, kann ich sie in der spanischen Version auf Spanisch ESNULO()
und Englisch eingeben ISNULL()
und es dauert richtig.
Wenn es zu kompliziert ist, beide zu akzeptieren; gut, dann nimm nur eine an, lokalisiere nicht, um Idome zu multiplizieren!
Der Trick, den ich für diese riesige Formel benutze, ist zu testen, ob es ]
existiert (M $ EXCEL), oder zu testen, ob es existiert '#$
(LibreOffice CALC), während ich den Namen extrahiere =CELL("filename")
. Es ist so komisch!
Nochmals mit sarkastischen Fragen: Warum fügten sie hinzu =SHEET(A1)
und nicht =SHEETNAME(A1)
? Es macht uns allen die Arbeit schwerer!
In LibreOffice habe ich Ihre Formel wie folgt gemischt, und die Zahl 20 gegen Ende ist die Grenze für die angezeigten Zeichen:
= (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 ("# $", (RIGHT (CELL ("filename") "), LEN (CELL (" filename ")) - MAX (IF (NOT (ISERR (SEARCH (" \ ", CELL (" filename "), ROW (1: 255: 255))), SEARCH (" \ ", CELL (" filename "), ROW (1: 255: 255)))))) + 2,20), 1,1))