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

Почему это нужно и где применяется

Вставка названия листа в ячейку Microsoft Excel — задача, которая на первый взгляд кажется простой, но часто вызывает затруднения. На практике эта функция востребована в динамических отчётах, где имя листа служит идентификатором данных (например, "Отчёт за январь" или "Бюджет_2026"). Без автоматического обновления при переименовании листа приходится править каждое упоминание вручную — а это ошибки и потеря времени.

Классический сценарий: у вас есть сводная таблица, которая подтягивает данные с нескольких листов. Чтобы пользователь понимал, откуда берутся цифры, логично вывести имя источника прямо в ячейке. Или другой случай: вы создаёте шаблон документа для коллег, где название листа должно автоматически отображаться в заголовке. В обоих случаях ручной ввод неэффективен.

В этой статье разберём все актуальные способы вставки названия листа в ячейку — от простых формул до VBA-скриптов, включая обход ограничений Excel. Вы узнаете, какой метод подходит для вашей версии программы (2010, 2016, 2019, 365 или Excel Online), и как избежать типичных ошибок.

Способ 1: Формула с функцией CELL (самый простой)

Если вам нужно быстро получить имя текущего листа без макросов, используйте комбинацию функций CELL и MID. Этот метод работает во всех версиях Excel, включая Excel для Mac, но имеет одно ограничение: формула вернёт полный путь к файлу, из которого придётся "вырезать" имя листа.

Введите в ячейку (например, A1):

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

Разберём, как это работает:

  • 📌 CELL("filename";A1) — возвращает полный путь к файлу в формате 'C:\Users\[Book1.xlsx]Лист1'!A1.
  • 🔍 FIND("]";...) — находит позицию закрывающей скобки ], после которой идёт имя листа.
  • ✂️ MID(..., позиция+1, 32) — извлекает 32 символа после скобки (это максимальная длина имени листа в Excel).
⚠️ Внимание: Если книга ещё не сохранена, формула вернёт ошибку #VALUE!. Сначала сохраните файл.

Чтобы формула работала корректно при переименовании листа, используйте динамическое обновление: нажмите F9 или включите автоматический пересчёт в Формулы → Параметры вычислений → Автоматически.

📊 Какую версию Excel вы используете?
Excel 2010-2013
Excel 2016-2019
Excel 365 (подписка)
Excel для Mac
Excel Online

Способ 2: VBA-макрос для автоматического обновления

Если формулы вам не подходят (например, из-за ограничения на 32 символа или необходимости обновлять данные вручную), используйте макрос на VBA. Этот метод гарантированно сработает даже в сложных книгах с большим количеством листов.

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

  1. Нажмите Alt + F11, чтобы открыть редактор Visual Basic for Applications.
  2. В окне проекта найдите вашу книгу (например, VBAProject (Book1.xlsx)) и дважды кликните на лист, где нужно вывести имя.
  3. Вставьте следующий код:
Private Sub Worksheet_Activate()

Range("A1").Value = Me.Name

End Sub

Этот макрос будет автоматически обновлять ячейку A1 при активации листа. Чтобы имя обновлялось при переименовании, добавьте ещё один обработчик:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Me.Cells) Is Nothing Then

Range("A1").Value = Me.Name

End If

End Sub

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

  • 🔄 Имя обновляется мгновенно при любых изменениях.
  • 📝 Нет ограничения на длину имени листа.
  • 🛠️ Работает даже в защищённых листах (если разрешены макросы).
⚠️ Внимание: Макросы не работают в Excel Online и могут быть заблокированы в корпоративных сетях из-за политики безопасности. Перед распространением файла проверьте настройки макросов в Файл → Параметры → Центр управления безопасностью.

☑️ Подготовка к использованию VBA

Выполнено: 0 / 4

Способ 3: Пользовательская функция (UDF) для гибкости

Если вам нужно выводить имя листа в нескольких ячейках или использовать его в других формулах, создайте пользовательскую функцию (UDF). Это более универсальный подход, чем макрос из предыдущего способа.

Откройте редактор VBA (Alt + F11) и вставьте этот код в модуль (в меню Insert → Module):

Function SheetName(Optional rng As Range) As String

If rng Is Nothing Then

SheetName = ActiveSheet.Name

Else

SheetName = rng.Parent.Name

End If

End Function

Теперь в любой ячейке можно использовать формулу:

  • 📍 =SheetName() — вернёт имя активного листа.
  • 📍 =SheetName(A1) — вернёт имя листа, где находится ячейка A1.

Примеры применения UDF:

ЗадачаФормулаРезультат
Вывести имя текущего листа=SheetName()"Отчёт_2026"
Объединить имя листа с текстом="Данные с листа: " & SheetName(B2)"Данные с листа: Продажи"
Создать динамический заголовок="Отчёт по " & SheetName() & " за " & TODAY()"Отчёт по Бюджет за 15.05.2026"

UDF удобна тем, что её можно использовать в условном форматировании или в связке с другими функциями, например, VLOOKUP или INDEX.

Способ 4: Power Query для динамических отчётов

Если вы работаете с Power Query (доступен в Excel 2016+ и 365), можно автоматизировать вывод имени листа через параметры запроса. Этот метод полезен для создания динамических дашбордов, где данные подтягиваются с разных листов.

Алгоритм действий:

  1. Перейдите на вкладку Данные и выберите Получить данные → Из других источников → Пустой запрос.
  2. В редакторе Power Query введите в строку формул:
= Excel.CurrentWorkbook(){[Name="Table1"]}[Content]{0}[Column1]

Замените Table1 на имя вашей таблицы. Чтобы получить имя листа, используйте функцию:

= Text.AfterDelimiter(Excel.CurrentWorkbook(){[Name="Table1"]}[Content]{0}[Column1], "]")

Преимущества Power Query:

  • 🔄 Автоматическое обновление при изменении данных.
  • 📊 Интеграция с Power Pivot и Power BI.
  • 🛡️ Нет зависимости от макросов (работает в Excel Online с ограничениями).

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

Как обновить данные из Power Query?

Чтобы применить изменения, нажмите Данные → Обновить все или Главная → Закрыть и загрузить в редакторе запросов.

Способ 5: Офисные надстройки (без кода)

Если вы не хотите возиться с формулами или VBA, воспользуйтесь готовыми надстройками. Например, Kutools for Excel или Ablebits предлагают функцию вставки имени листа в одну кнопку.

Инструкция для Kutools:

  1. Установите надстройку и перезапустите Excel.
  2. Выделите ячейку, куда нужно вставить имя.
  3. На вкладке Kutools выберите Вставка → Вставить имя листа.

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

  • 🎯 Нет нужды писать код или запоминать формулы.
  • 🔧 Дополнительные функции: массовое переименование листов, цветовая маркировка и т.д.
  • 📅 Регулярные обновления от разработчиков.

Недостатки:

  • 💰 Платная лицензия (от $39 до $69 в год).
  • 🔒 Может конфликтовать с корпоративными политиками безопасности.

Альтернатива: бесплатная надстройка Excel Name Manager (подходит для управления именованными диапазонами и листами).

Типичные ошибки и как их избежать

Даже опытные пользователи Excel сталкиваются с проблемами при работе с именами листов. Вот самые распространённые ошибки и их решения:

ОшибкаПричинаРешение
#VALUE! в формуле CELLФайл не сохранёнСохраните книгу (Ctrl + S) и обновите формулу (F9)
Макрос не срабатываетОтключены макросыПроверьте настройки в Файл → Параметры → Центр управления безопасностью
Имя листа обрезаетсяФормула MID ограничена 32 символамиИспользуйте VBA или увеличьте третий параметр в MID
Функция SheetName не обновляетсяОтключён автоматический пересчётВключите в Формулы → Параметры вычислений → Автоматически

Ещё одна частая проблема: специальные символы в имени листа (например, !, ?, /). Они могут ломать формулы или VBA-скрипты. Рекомендации:

  • 🚫 Избегайте символов: \ / * ? : [ ].
  • ✅ Используйте вместо них: _ - ( ).
  • 🔤 Если символы необходимы, экранируйте их в формулах с помощью SUBSTITUTE.
⚠️ Внимание: В Excel 365 при совместном редактировании книги макросы и UDF могут работать нестабильно. Перед началом совместной работы сохраните резервную копию файла.

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

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

Да, но только вручную. Выделите ячейку, введите имя листа (оно отображается на вкладке внизу экрана) и нажмите Enter. Однако при переименовании листа данные не обновятся автоматически.

Почему формула CELL("filename") возвращает ошибку в Excel Online?

Excel Online не поддерживает функцию CELL с аргументом "filename". Используйте альтернативные методы: VBA (не работает в Online) или надстройки.

Как вставить имя листа в заголовок при печати?

Перейдите в Разметка страницы → Печатаемые заголовки. В поле "Верхний колонтитул" нажмите на значок и вставьте код &[Tab] — он автоматически подставит имя листа.

Можно ли получить имя листа в Google Таблицах?

В Google Sheets нет прямого аналога, но можно использовать скрипт Google Apps Script:

function getSheetName() {

return SpreadsheetApp.getActiveSheet().getName();

}

Затем в ячейке вызовите функцию =getSheetName().

Как массово вставить имена листов во все листы книги?

Используйте этот VBA-скрипт:

Sub InsertSheetNames()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

ws.Range("A1").Value = ws.Name

Next ws

End Sub

Он пройдёт по всем листам и вставит их имена в ячейку A1.