Как вставить название текущего листа в ячейку Excel: все способы от простого к сложному

Работаете с большими файлами Microsoft Excel и постоянно путаетесь в листах? Или нужно автоматически подтягивать имя текущей вкладки в отчёт, чтобы не править его вручную? Вставка названия листа в ячейку — одна из самых востребованных задач при работе с таблицами. Без этого не обойтись при создании динамических дашбордов, сводных отчётов или просто для удобства навигации.

Многие пользователи годами копируют имя вкладки вручную — и зря! В Excel есть как минимум 5 способов автоматизировать этот процесс: от простых функций до макросов VBA. В этой статье разберём каждый метод с пошаговыми инструкциями, нюансами для разных версий программы (включая Excel 365 и Excel для Mac) и готовыми формулами для копирования. А ещё — расскажем, почему иногда имя листа не обновляется и как это исправить.

——— ———

1. Самый простой способ: функция CELL (для Excel на Windows)

Если вам нужно одноразово вставить название листа в ячейку — используйте функцию CELL с аргументом "filename". Этот метод работает только в Excel для WindowsMacOS и Google Таблицах он вернёт ошибку).

Формула выглядит так:

=ПРЕДСТАВИТЬ(CELL("filename";A1);"[";REPT(" ";100));"]";"")

Разберём, как она устроена:

  1. CELL("filename";A1) — возвращает полный путь к файлу + имя листа в формате [Книга1.xlsx]Лист1.
  2. ПРЕДСТАВИТЬ (или SUBSTITUTE в английской версии) удаляет всё до названия листа, заменяя скобки на пробелы.

⚠️ Внимание: Если файл ещё не сохранён, функция вернёт ошибку #ЗНАЧ!. Сначала сохраните книгу (Ctrl+S), затем применяйте формулу.

Сохранить файл (обязательно!)

Вставить формулу в любую ячейку

Убедиться, что Excel на Windows (не Mac/Google)

Обновить данные (F9), если имя листа не появилось-->

Пример результата:

ФормулаРезультатПояснение
=CELL("filename")C:\Users\Имя\Документы\[Отчёт.xlsx]Лист1Полный путь + имя листа
=ПРЕДСТАВИТЬ(CELL("filename");"[";REPT(" ";100))Отчёт.xlsx]Лист1Удалены символы до названия файла
Финальная формула (см. выше)Лист1Только имя текущего листа

2. Универсальный метод: VBA-макрос для всех версий Excel

Если функция CELL не работает (например, у вас MacOS или Google Таблицы), на помощь придёт пользовательская функция на VBA. Этот способ подходит для любой версии Excel, включая Excel 2010–2026 и Excel Online (с ограничениями).

Следуйте инструкции:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. В меню выберите Insert → Module.
  3. Вставьте этот код:
    Function SheetName() As String
    

    SheetName = ActiveSheet.Name

    End Function

  4. Закройте редактор и вернитесь в Excel.
  5. В любой ячейке введите =SheetName() — она вернёт имя текущего листа.

⚠️ Внимание: В Excel Online макросы не работают. Также проверьте, что в настройках безопасности разрешены макросы (Файл → Параметры → Центр управления безопасностью).

Преимущества метода:

  • 🔹 Работает на Windows и MacOS.
  • 🔹 Обновляет имя листа автоматически при переключении вкладок.
  • 🔹 Можно использовать в формулах (например, =SheetName() & "!" & A1 для создания динамических ссылок).

3. Динамические массивы в Excel 365: функция LET + CELL

В Excel 365 и Excel 2021 появилась функция LET, которая позволяет создавать переменные внутри формул. С её помощью можно упростить извлечение имени листа без VBA. Формула выглядит так:

=LET(

путь; CELL("filename";A1);

имя_файла; MID(путь; FIND("]"; путь) + 1; 255);

имя_листа; IFERROR(LEFT(имя_файла; FIND("!"; имя_файла) - 1); имя_файла);

имя_листа

)

Как это работает:

  1. CELL("filename") возвращает путь к файлу.
  2. MID и FIND извлекают часть строки после ] (название листа).
  3. LET сохраняет промежуточные результаты в переменные для удобства.

🔹 Плюс метода: формула автоматически обновляется при переименовании листа или файла.

🔸 Минус: не работает в Excel 2019 и старше.

Excel 365 (подписка)|Excel 2021|Excel 2019|Excel 2016 или старше|Google Таблицы-->

4. Альтернатива для Google Таблиц: функция GOOGLEFINANCE (хак)

В Google Таблицах нет функции CELL, но есть обходной путь с использованием GOOGLEFINANCE и скриптов Apps Script. Рассмотрим оба варианта.

Способ 1: Скрипт Apps Script (аналог VBA)

  1. Откройте Расширения → Apps Script.
  2. Вставьте код:
    function getSheetName() {
    

    return SpreadsheetApp.getActiveSheet().getName();

    }

  3. Сохраните скрипт и вернитесь в таблицу.
  4. В любой ячейке введите =getSheetName().

Способ 2: Формула с GOOGLEFINANCE (костыль)

Если скрипты недоступны, используйте этот трюк:

=REGEXEXTRACT(CELL("address";A1);"'(.*?)'!")

Она извлекает имя листа из адреса ячейки (например, из 'Лист1'!A1 вернёт Лист1). Но работает только если в названии листа есть апостроф (') — добавьте его вручную к имени вкладки.

5. Вставка имени листа в заголовок или колонтитул

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

  1. Перейдите во вкладку Вид → Разметка страницы.
  2. Щёлкните по верхнему или нижнему колонтитулу.
  3. В панели инструментов нажмите Название листа (иконка с символом &[Tab]).
  4. Готово! Теперь при печати на каждом листе будет отображаться его имя.

🔹 Примечание: Этот метод не вставляет имя в ячейку, но полезен для оформления отчётов.

Как вставить дату и время в колонтитул?

Помимо названия листа, в колонтитулы можно добавить:

- Текущую дату: код &[Date]

- Текущее время: код &[Time]

- Номер страницы: код &[Page]

Просто вставьте их в поле колонтитула так же, как и &[Tab].

6. Продвинутый уровень: динамические ссылки с именем листа

Часто требуется не просто вставить имя листа, а создать динамическую ссылку на него. Например, чтобы формула СУММ автоматически подтягивала данные с текущей вкладки. Для этого комбинируем функции:

=ДВССЫЛ("'" & SheetName() & "'!A1:A10")

Где:

  • SheetName() — наша пользовательская функция из раздела про VBA.
  • ДВССЫЛ (или INDIRECT) преобразует текст в ссылку на диапазон.

🔹 Пример использования:

Допустим, у вас есть листы с названиями месяцев (Январь, Февраль), и на каждом нужно просуммировать столбец B. Формула на отдельном листе Итоги будет такой:

=СУММ(ДВССЫЛ("'" & SheetName() & "'!B:B"))

⚠️ Внимание: Функция ДВССЫЛвольная (volatile), то есть пересчитывается при любом изменении в книге. Это может замедлить работу с большими файлами. В таких случаях используйте VBA для оптимизации.

Частые ошибки и как их исправить

Даже с простыми формулами пользователи сталкиваются с проблемами. Разберём самые распространённые:

1. Функция CELL возвращает #ЗНАЧ!

  • 🔹 Причина: Файл не сохранён. Excel не может определить путь к несуществующему файлу.
  • 🔹 Решение: Сохраните книгу (Ctrl+S) и обновите данные (F9).

2. Макрос SheetName() не обновляется

  • 🔹 Причина 1: В настройках отключены макросы. Проверьте Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов.
  • 🔹 Причина 2: Формулы в книге не пересчитываются автоматически. Включите автопересчёт: Формулы → Параметры вычислений → Автоматически.

3. В Google Таблицах формула не работает

  • 🔹 Причина: Отсутствует аналог функции CELL.
  • 🔹 Решение: Используйте Apps Script (см. раздел 4) или добавьте апостроф в название листа для работы с REGEXEXTRACT.

🔹 Совет: Если ничего не помогает, создайте связанную таблицуGoogle ТаблицахФайл → Импортировать → Ссылка на другой лист). Это позволит подтягивать данные без формул.

FAQ: Ответы на частые вопросы

Можно ли вставить имя листа в ячейку без формул и макросов?

Нет, в стандартном Excel нет встроенной функции для этого. Все способы требуют либо формул (CELL, LET), либо скриптов (VBA/Apps Script). Однако вы можете скопировать имя листа вручную:

  1. Щёлкните правой кнопкой по вкладке листа.
  2. Выберите Переименовать.
  3. Скопируйте название (Ctrl+C) и вставьте в ячейку (Ctrl+V).

Минус: при переименовании листа данные не обновятся автоматически.

Почему функция SheetName() возвращает имя другого листа?

Это происходит, если:

  • 🔹 Вы скопировали формулу с другого листа, и она "запомнила" его имя. Обновите данные (F9).
  • 🔹 В книге есть скрытые листы, и макрос сбивается. Проверьте видимость вкладок (Главная → Формат → Скрыть/отобразить → Отобразить лист).

Решение: добавьте в код VBA строку Application.Volatile, чтобы функция всегда брала актуальное имя.

Как вставить имя листа в заголовок диаграммы?

Для этого:

  1. Создайте диаграмму на листе.
  2. Щёлкните по её заголовку.
  3. В строке формул введите ="Отчёт: " & SheetName() (где SheetName() — наша пользовательская функция).

🔹 Важно: Заголовок диаграммы не обновляется автоматически. При переименовании листа щёлкните по заголовку и нажмите Enter.

Работает ли это в Excel для Mac?

Да, но с оговорками:

  • 🔹 Функция CELL("filename") не работает в Excel для Mac.
  • 🔹 Макрос VBA работает, но может требовать дополнительных разрешений в настройках безопасности.
  • 🔹 В Excel 365 для Mac доступна функция LET (см. раздел 3).

Рекомендуем использовать VBA или LET для надёжности.

Можно ли вставить имя листа в условное форматирование?

Нет, условное форматирование не поддерживает пользовательские функции (включая SheetName()). Однако вы можете:

  1. Создать скрытую ячейку с именем листа (например, =SheetName() в A1).
  2. В правилах условного форматирования ссылаться на эту ячейку (например, =$A$1="Итоги").