Как я могу получить имя листа в ячейке? (У меня есть более одного листа, я хочу получить текущий на каждом листе)
Как я могу получить имя листа в ячейке? (У меня есть более одного листа, я хочу получить текущий на каждом листе)
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)
Сначала сохраните ваш файл, затем введите эту формулу где угодно
источник
=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
;
вместо,
разделения элементы функцииПротестировано и работает на M $ EXCEL и LibreOffice CALC (формула на испанском языке):
Примечание. Это одна огромная формула, которая вписывается в другие формулы или использует только одну ячейку.
Я думаю по-английски: 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 к концу будет ограничением для отображаемых символов:
источник