Можно ли получить имя листа?

12

Как я могу получить имя листа в ячейке? (У меня есть более одного листа, я хочу получить текущий на каждом листе)

BrunoLM
источник

Ответы:

7

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)
Арьян
источник
7

Вот формула.

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

( Ссылка на дополнительную информацию )

FlashDark
источник
Обратите внимание, что ссылка на «А1» не нужна. Также обратите внимание, что это не зависит от платформы, и что формула может оставаться пустой до тех пор, пока вы не сохраните книгу. См. Также support.microsoft.com/kb/323225
Арджан,
Если я положу это в двух листах, он будет иметь одинаковое имя в обоих. Он не получает текущую рабочую таблицу, в которой находится ячейка. Он получает текущую рабочую таблицу, которую я просматриваю, и копирует значение во все остальные поля во всех других рабочих таблицах.
BrunoLM
2

Сначала сохраните ваш файл, затем введите эту формулу где угодно

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
Ахташам Хан
источник
+ Это работает и коротко. На заметку: в немецком Excel использовать=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
nixda
В моем случае мне нужно было использовать ;вместо ,разделения элементы функции
WoJ
0

Протестировано и работает на 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.

Намного лучше, если вы разделите такую ​​огромную формулу на несколько ячеек (чтобы не вызывать один и тот же несколько раз):

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

Почему, черт возьми, получить название листа так сложно, в то время как получить положение листа в списке листов так просто в современной электронной таблице (предупреждение, в 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)? Это делает для всех нас тяжелее работать!

Claudio
источник
-1

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

Carlos
источник
1
Это для MS Excel.
Джеймс Мерц