Jak mogę uzyskać nazwę arkusza w komórce? (Mam więcej niż jeden arkusz, chcę uzyskać bieżący na każdym arkuszu)
źródło
Jak mogę uzyskać nazwę arkusza w komórce? (Mam więcej niż jeden arkusz, chcę uzyskać bieżący na każdym arkuszu)
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)
Najpierw zapisz plik, a następnie w dowolnym miejscu wprowadź tę formułę
źródło
=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
;
zamiast,
oddzielania elementów funkcjiTestowany i działa na M $ EXCEL i LibreOffice CALC (Formula jest w języku hiszpańskim):
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 angielskuISNULL()
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ę!źródło
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:
źródło