Ответы:
Microsoft объясняет, что вам может понадобиться использовать формулу массива, чтобы получить имя листа:
Чтобы отобразить имя текущего рабочего листа, введите следующую формулу в качестве формулы массива
=RIGHT(CELL("filename"),LEN(CELL("filename"))- MAX(IF(NOT(ISERR(SEARCH("\",CELL("filename"), ROW(1:255)))),SEARCH("\",CELL("filename"),ROW(1:255)))))
где «имя файла» - это буквально слово «имя файла» в кавычках.
ПРИМЕЧАНИЕ. Вы должны ввести эту формулу в виде формулы массива. Чтобы ввести формулу в виде формулы массива, нажмите сочетание клавиш CTRL + SHIFT + ВВОД.
Также обратите внимание, что это очень зависит от платформы. На Mac вам понадобятся разные формулы , так как он использует разные разделители пути. Кроме того, это может работать по-другому в OpenOffice.org и других альтернативах. А при использовании на несохраненной книге вы можете получить #VALUE!
вместо этого.
Если вы не используете формулу массива, вы можете получить имя книги (последняя часть имени файла), например:
Чтобы вернуть только имя книги, как используется в следующей формуле:
=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)
Вот формула.
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
Сначала сохраните ваш файл, затем введите эту формулу где угодно
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
;
вместо ,
разделения элементы функции
Протестировано и работает на M $ EXCEL и LibreOffice CALC (формула на испанском языке):
=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")))
Примечание. Это одна огромная формула, которая вписывается в другие формулы или использует только одну ячейку.
Я думаю по-английски: EXTRAEB будет MIDB, CELDA будет CELL, SI будет IF, ESERROR будет ISERROR, HALLAR будет FIND, а LARGO будет DENGTH.
Намного лучше, если вы разделите такую огромную формулу на несколько ячеек (чтобы не вызывать один и тот же несколько раз):
=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>))
Почему, черт возьми, получить название листа так сложно, в то время как получить положение листа в списке листов так просто в современной электронной таблице (предупреждение, в EXCEL 2000 такого не существует): =HOJA(A1)
И еще: почему функции называются по-разному на каждом языке, что если у меня M $ EXCEL на испанском и CALC на английском (не говоря уже на русском, китайском и т. Д.)? какая тяжелая работа, нужно помнить все имена функций на несколько идиом.
Внутри они сохраняются с конкретными именами, например =SHEET(A1)
, такими же, =HOJA(A1)
как=_xlfn.SHEET(A1)
; почему бы не использовать на всех идиомах последний?
Или сказал в другой форме: почему, если я поставлю его на английском языке, он скажет, что это не имя vaild функции (если CALC / M $ EXCEL не на английском языке)?
С функциями M $ ACCESS и SQL, которые не выполняются, в испанской версии я могу напечатать их на испанском ESNULO()
и английском языках, ISNULL()
и все правильно.
Если это слишком сложно принять оба; ну, тогда примите только одно, не локализуйте, чтобы умножать идомы!
Итак, возвращаясь к вопросу, трюк, который я использую в этой огромной формуле, состоит в том, чтобы проверить, ]
существует ли (M $ EXCEL), иначе проверить, существует ли '#$
(LibreOffice CALC) при извлечении имени из =CELL("filename")
. Это так странно!
Опять с саркастическими вопросами: почему они добавлены, =SHEET(A1)
а нет =SHEETNAME(A1)
? Это делает для всех нас тяжелее работать!
В LibreOffice я смешал вашу формулу со следующим, и число 20 к концу будет ограничением для отображаемых символов:
= (SUBSTITUTE (MID ((ПРАВЫЙ (CELL ( "имя_файла"), LEN (CELL ( "имя_файла")) - MAX (IF (NOT (ISERR (SEARCH ( "\", CELL ( "имя_файла"), ROW (1 : 255: 255)))), SEARCH ( "\", CELL ( "имя_файла"), СТРОКА (1: 255: 255)))))), FIND ( "# $", (ПРАВЫЙ (CELL ( "имя файла "), LEN (CELL (" имя_файла ")) - MAX (IF (NOT (ISERR (SEARCH (" \ "CELL ( "имя_файла"), СТРОКА (1: 255: 255)))), SEARCH (" \ », ЯЧЕЙКА ( "имя_файла"), СТРОКА (1: 255: 255))))))) + 2,20), 1,1))