Odpowiedzi:
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)
Oto wzór.
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
Najpierw zapisz plik, a następnie w dowolnym miejscu wprowadź tę formułę
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
;
zamiast ,
oddzielania elementów funkcji
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):
=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>))
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ę!
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))