Ist es möglich, den Blattnamen zu erhalten?

12

Wie kann ich den Blattnamen in einer Zelle abrufen? (Ich habe mehr als ein Blatt, ich möchte den aktuellen Stand auf jedem Blatt sehen)

BrunoLM
quelle

Antworten:

7

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)
Arjan
quelle
7

Hier ist eine Formel.

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

( Link zu mehr Infos )

FlashDark
quelle
Beachten Sie, dass der Verweis auf "A1" nicht benötigt wird. Beachten Sie außerdem, dass dies nicht plattformunabhängig ist und die Formel möglicherweise leer bleibt, bis Sie die Arbeitsmappe speichern. Siehe auch support.microsoft.com/kb/323225
Arjan
Wenn ich dies in zwei Arbeitsblätter einfüge, hat es in beiden den gleichen Namen. Es wird nicht das aktuelle Arbeitsblatt abgerufen, in dem sich die Zelle befindet. Es wird das aktuelle Arbeitsblatt abgerufen, das ich gerade ansehe, und der Wert wird in allen anderen Feldern in allen anderen Arbeitsblättern repliziert.
BrunoLM
2

Speichern Sie zuerst Ihre Datei, bevor Sie diese Formel irgendwo eingeben

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
Ahtasham Khan
quelle
+ Das funktioniert und ist kurz. =RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
Randbemerkung
In meinem Fall musste ich verwenden, ;anstatt ,die Elemente einer Funktion zu
trennen
0

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):

  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>))

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!

claudio
quelle
-1

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))

Carlos
quelle
1
Dies ist für MS Excel.
James Mertz