Какая формула Excel возвращает имя листа?

Я искал документацию по функции excel и общий поиск MSDN, но не смог найти способ вернуть имя листа без VBA.

Есть ли способ получить имя листа в формуле excel без необходимости прибегать к VBA?

Ответы

Ответ 1

Не очень хорошо с excel, но я нашел их здесь

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

и A1 может быть любой ячейкой без ошибок в листе.
Для полного пути и имени листа используйте

=CELL("filename",A1)

Ответ 2

Для последних версий Excel синтаксис формулы:

=MID(CELL("filename";A1);FIND("]";CELL("filename";A1))+1;255)

Ответ 3

Ниже будет указано имя листа:

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))

Ответ 4

У меня был уже открытый модуль, поэтому я создал пользовательскую функцию:

Public Function Sheetname (ByRef acell as Range) as string
Sheetname = acell.Parent.Name 
End Function 

Ответ 5

Ни одна из формул, приведенных в других ответах, не поддерживает случай, если в filepath есть символ].

Формула ниже является более сложной, но она может правильно обрабатывать такие случаи:

 =MID(CELL("filename",A1),FIND("]",CELL("filename",A1),FIND("?",SUBSTITUTE(CELL("filename",A1),"\","?",LEN(CELL("filename",A1))-LEN(SUBSTITUTE(CELL("filename",A1),"\","")))))+1,LEN(CELL("filename",A1)))

Ответ 6

В имени файла была квадратная скобка ']', поэтому необходимо было изменить приведенную выше формулу в соответствии со следующим, чтобы найти последнее вхождение квадратной скобки. Проверено, что это работает для 0,1 или более квадратных скобок в имени файла/пути.

=RIGHT(CELL("filename"),LEN(CELL("filename")) - FIND("]]]",SUBSTITUTE(CELL("filename"),"]","]]]",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"]","")))))
  1. Заменяет все квадратные скобки с помощью функции замены, затем сравнивает длину результата с длиной имени файла, чтобы определить количество квадратных скобок в имени файла.
  2. Использует количество вхождений в квадратные скобки для замены последней квадратной скобки на 3 последовательных квадратных скобки ']]]'
  3. Использует функцию Find, чтобы определить расположение 3 квадратных скобок в строке
  4. Вычитает расположение 3 квадратных скобок из длины полного пути
  5. Использует результат, чтобы получить наиболее правильные символы (будучи именем листа)

Предыдущий комментарий выше о сохранении рабочей книги также является ключевым, поскольку в противном случае вы получите #Value! результат.

Ответ 7

Вот довольно короткий, который имеет пару дополнительных преимуществ:

  • Обратный поиск (большинство других ответов идут в неправильном направлении) с помощью часто игнорируемой функции REPT.
  • A1 кажется плохим выбором, поскольку вероятность errors значительно выше, чем... $FZZ$999999.
  • Не забудьте абсолют. Копирование и вставка некоторых других примеров может привести к ошибке из-за ссылочных изменений.
  • ? является преднамеренным, поскольку это не должно быть в пути к файлу.

=SUBSTITUTE(RIGHT(SUBSTITUTE(CELL("Filename",$FZZ$999999), "]",REPT("?", 999)), 999),"?","")

Ответ 8

Я почти уверен, что вы могли бы это сделать. Я только что сделал, и вот самое первое, что пришло мне в голову.

In Excel it is possible to use the CELL function/formula and the MID and FIND to return the name of an Excel Worksheet in a Workbook. The formula below shows us how;

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

Where A1 is any non error cell on the Worksheet. If you want the full path of the Excel Workbook, simply use;

=CELL("filename",A1)

Единственный улов в том, что вам нужно сохранить файл для этого!