Czy można uzyskać nazwę arkusza?

12

Jak mogę uzyskać nazwę arkusza w komórce? (Mam więcej niż jeden arkusz, chcę uzyskać bieżący na każdym arkuszu)

BrunoLM
źródło

Odpowiedzi:

7

Microsoft wyjaśnia, że może być konieczne użycie formuły tablicowej, aby uzyskać nazwę arkusza:

Aby wyświetlić nazwę bieżącego arkusza roboczego, wpisz następującą formułę jako formułę tablicową

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

gdzie „nazwa pliku” to dosłownie słowo „nazwa pliku” w cudzysłowie.

UWAGA: Musisz wprowadzić tę formułę jako formułę tablicową. Aby wprowadzić formułę jako formułę tablicową, naciśnij CTRL + SHIFT + ENTER.

Pamiętaj również, że jest to bardzo zależne od platformy. Na komputerze Mac potrzebujesz różnych formuł , ponieważ używa on różnych separatorów ścieżek. Może również działać inaczej w OpenOffice.org i innych alternatywach. A jeśli korzystasz z niezapisanego skoroszytu, możesz #VALUE!zamiast tego dostać .

Gdy nie używasz formuły tablicowej, możesz uzyskać nazwę skoroszytu (ostatnia część nazwy pliku), na przykład:

Aby zwrócić tylko nazwę skoroszytu, jak w poniższej formule:

=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1,
  SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)
Arjan
źródło
7

Oto wzór.

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

( Link do więcej informacji )

FlashDark
źródło
Pamiętaj, że odniesienie do „A1” nie jest potrzebne. Pamiętaj też, że nie jest to niezależne od platformy i że formuła może pozostać pusta do momentu zapisania skoroszytu. Zobacz także support.microsoft.com/kb/323225
Arjan
Jeśli umieszczę to w dwóch arkuszach, będzie mieć tę samą nazwę w obu. Nie pobiera bieżącego arkusza roboczego, w którym znajduje się komórka. Pobiera bieżący arkusz, który przeglądam, i powtarza wartość na wszystkich innych polach we wszystkich innych arkuszach.
BrunoLM,
2

Najpierw zapisz plik, a następnie w dowolnym miejscu wprowadź tę formułę

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
Ahtasham Khan
źródło
+ To działa i jest krótkie. Na marginesie: W niemieckim programie Excel=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
nixda,
W moim przypadku musiałem użyć ;zamiast ,oddzielania elementów funkcji
WoJ
0

Testowany i działa na M $ EXCEL i LibreOffice CALC (Formula jest w języku hiszpańskim):

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

Uwaga: Jest to jedna wielka formuła, która mieści się w innych formułach lub używa tylko jednej komórki.

Myślę po angielsku: EXTRAEB to MIDB, CELDA to CELL, SI to IF, ESERROR to ISERROR, HALLAR to FIND, a LARGO to DŁUGOŚĆ.

O wiele lepiej jest podzielić tak ogromną formułę na wiele komórek (aby uniknąć wielokrotnego wywoływania tego samego):

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

Dlaczego, do cholery, uzyskanie nazwy arkusza jest tak skomplikowane, podczas gdy uzyskanie pozycji arkusza na liście arkuszy jest tak łatwe w nowoczesnym arkuszu kalkulacyjnym (ostrzeżenie, w EXCEL 2000 ten nie istnieje): =HOJA(A1)

I jeszcze jedno: dlaczego funkcje są wywoływane inaczej w każdym języku, co jeśli mam M $ EXCEL to hiszpański i CALC w języku angielskim (nie mówiąc już po rosyjsku, chińsku itp.)? co za ciężka praca, trzeba pamiętać wszystkie nazwy funkcji na mnożeniu idiomów.

Wewnętrznie są zapisywane pod konkretnymi nazwami, na przykład =SHEET(A1)to jest to samo co =HOJA(A1)zapisane =_xlfn.SHEET(A1); dlaczego nie użyć na wszystkich idiomach ostatniego?

Lub powiedział w innej formie: dlaczego, jeśli wstawię go w języku angielskim, powiedz, że nie jest to nazwa funkcji ogólnej (jeśli CALC / M $ EXCEL nie jest w języku angielskim)?

Dzięki M $ ACCESS i funkcjom SQL, które się nie zdarzają, w wersji hiszpańskiej mogę pisać je po hiszpańsku ESNULO()i angielsku ISNULL()i bierze to poprawnie.

Jeśli zaakceptowanie obu jest zbyt skomplikowane; no to zaakceptuj tylko jeden, nie lokalizuj, aby pomnożyć idomy!

Cóż, powracając do pytania, sztuczką, której używam w tej wielkiej formule, jest sprawdzenie, czy ]istnieje (M $ EXCEL), w przeciwnym razie sprawdzenie, czy istnieje '#$(LibreOffice CALC) podczas wydobywania nazwy =CELL("filename"). To takie dziwne!

Ponownie z sarkastycznymi pytaniami: dlaczego dodali, =SHEET(A1)a nie =SHEETNAME(A1)? Utrudnia nam to wszystkim pracę!

claudio
źródło
-1

W LibreOffice pomieszałem twoją formułę w następujący sposób, a liczba 20 pod koniec będzie ograniczeniem liczby wyświetlanych znaków:

= (SUBSTITUTE (MID ((PRAWY (KOMÓRKA („nazwa pliku”), LEN (CELL („nazwa pliku”))) - MAX (JEŻELI (NIE (ISERR (SZUKAJ („\”, CELL („nazwa pliku”), ROW) (1) : 255: 255)))), SZUKAJ („\”, KOMÓRKA („nazwa pliku”), WIERSZ (1: 255: 255))))), ZNAJDŹ („# $”, (PRAWO (KOMÓRKA („nazwa pliku”) ”), LEN (CELL („ nazwa pliku ”)) - MAX (JEŻELI (NIE (ISERR (SZUKAJ („ \ ”, CELL („ nazwa pliku ”), ROW (1: 255: 255)))), SZUKAJ („ \ ”, KOMÓRKA („ nazwa pliku ”), ROW (1: 255: 255)))))) + 2,20), 1,1))

Carlos
źródło
1
To jest dla MS Excel.
James Mertz,