Как вставить текущее имя файла в Excel?

14

Я пытаюсь просмотреть имя файла, над которым я работаю, в электронной таблице Excel, используя формулу. Например, если файл назывался workbook1.xlsx, я бы хотел, чтобы в ячейке A1 отображался «workbook1.xlsx».

Формула, которую дает справочный сайт Microsoft, не работает: http://office.microsoft.com/en-us/excel-help/insert-the-current-excel-file-name-path-or-worksheet-in- а-клеточно-HA010103010.aspx # BMinsert3

= MID (CELL ("имя файла"), SEARCH ("[", CELL ("имя файла")) + 1, SEARCH ("]", CELL ("имя файла")) - SEARCH ("[", CELL ("имя файла" «)) - 1)

timothy.s.lau
источник
Как это не работает? Какой вывод это дает? Вы сохранили книгу?

Ответы:

14

Это работает здесь, я только что проверил на Excel 2007 (XP) и Excel 2013 (Windows 8).

Попробуйте в =CELL("filename")одиночку, чтобы помочь устранить неполадки.

  • Убедитесь, что вы сохранили свою книгу на диск. «Book1» не будет отображаться, если вы поместите формулу в новую несохраненную книгу.

  • Вы используете неанглийские региональные настройки на вашем компьютере? Некоторые языки требуют корректировки имен функций и синтаксиса формул (например, на французском языке запятые должны быть заменены точкой с запятой).

  • Вы на своем персональном компьютере или компьютере на рабочем месте? Если это рабочий компьютер, возможно, существуют ограничения прав пользователя, вызывающие проблемы.

Когда вы говорите «это не работает», можете ли вы быть более конкретным? Принимает ли он формулу как напечатанную? Ячейка пуста, показывает "#VALUE!" И т. Д.? Что происходит при использовании =CELL("filename")?

MTONE
источник
Я думаю, что у меня было пространство или что-то, теперь это работает. Благодарность!
timothy.s.lau
Кажется, не работает в бета-версии Excel 2015.
Акку
Убедитесь, что разметка ячейки, в которой вы находитесь, является общей / стандартной (поэтому не текст / число и т. Д.)
Lexib0y
1
Это не сработало для меня, пока я не изменил запятую на точку с запятой, в зависимости от моей локали.
mavrosxristoforos
9

Обратите внимание, что =CELL("filename")дает вам путь к последней измененной книге / листу так что если у вас открыто 2 рабочие книги, abc и xyz и ваша формула находится в abc, если вы в последний раз изменили значение в xyz, формула в abc отразит это и вернетxyz.xlsx

По этой причине обычно предпочтительно включать ссылку на ячейку (любую ссылку на ячейку), например

= CELL ("имя файла", A1 )

Использование этой версии означает, что вы получите только имя рабочей книги, в которой находится формула.

Вы можете использовать эту немного более короткую версию

=REPLACE(LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1))-1),1,FIND("[",CELL("filename",A1)),"")

Барри Гудини
источник
2

Я обнаружил, что это самая простая формула, которая возвращает только имя файла :

=REPLACE(LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1))-1),1,FIND("[",CELL("filename",A1)),"")

or - created in VBA:

Formula = "=REPLACE(LEFT(CELL(""filename"",A1),FIND(""]"",CELL(""filename"",A1))-1),1,FIND(""["",CELL(""filename"",A1)),"""")"

Чтобы вернуть полный путь , это будет делать:

=SUBSTITUTE(LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1))-1),"[","")

or - created in VBA:

Formula = "=SUBSTITUTE(LEFT(CELL(""filename"",A1),FIND(""]"",CELL(""filename"",A1))-1),""["","""")"
Gustav
источник
1

У меня была такая же проблема (вставленная формула не работала)! После того, как я заменил ,на ;в формуле она работала идеально.

= MID (CELL ("имя файла"); SEARCH ("["; CELL ("имя файла")) + 1; SEARCH ("]"; CELL ("имя файла")) - SEARCH ("["; CELL ("имя файла") «)) - 1)

Polle
источник
Я считаю, что это потому, что вы используете евро версию Excel. Версия Euro использует точки с запятой вместо запятых для параметров функции. Я считаю, что в международной версии также используются запятые.
krowe2
Дело не в том, какую версию Excel вы используете, а в том, какой «разделитель» вы используете в региональных настройках.
Дероби
1

Более простое решение:

В вашем файле Excel нажмите Alt+ F11, чтобы открыть Microsoft Visual Basics for Applications (VBA). В VBA выберите Insert > Moduleи вставьте следующий код

Public Function GetMyProp(prop As String) As String
    GetMyProp = ThisWorkbook.BuiltinDocumentProperties(prop)
End Function

В вашем файле типа формулы Excel: =GetMyProp("Title"). Это покажет название вашего документа в выбранной ячейке.

Бенни Хайге
источник
1

Если вы используете Excel на голландском языке, вы должны использовать голландские имена функций и использовать точку с запятой вместо запятой:

=VERVANGEN(LINKS(CEL("filename");VIND.SPEC("]";CEL("filename"))-1);1;VIND.SPEC("[";CEL("filename"));"")

Gast
источник