Работаете с большими файлами Microsoft Excel и постоянно путаетесь в листах? Или нужно автоматически подтягивать имя текущей вкладки в отчёт, чтобы не править его вручную? Вставка названия листа в ячейку — одна из самых востребованных задач при работе с таблицами. Без этого не обойтись при создании динамических дашбордов, сводных отчётов или просто для удобства навигации.
Многие пользователи годами копируют имя вкладки вручную — и зря! В Excel есть как минимум 5 способов автоматизировать этот процесс: от простых функций до макросов VBA. В этой статье разберём каждый метод с пошаговыми инструкциями, нюансами для разных версий программы (включая Excel 365 и Excel для Mac) и готовыми формулами для копирования. А ещё — расскажем, почему иногда имя листа не обновляется и как это исправить.
——— ———
1. Самый простой способ: функция CELL (для Excel на Windows)
Если вам нужно одноразово вставить название листа в ячейку — используйте функцию CELL с аргументом "filename". Этот метод работает только в Excel для Windows (в MacOS и Google Таблицах он вернёт ошибку).
Формула выглядит так:
=ПРЕДСТАВИТЬ(CELL("filename";A1);"[";REPT(" ";100));"]";"")
Разберём, как она устроена:
CELL("filename";A1)— возвращает полный путь к файлу + имя листа в формате[Книга1.xlsx]Лист1.ПРЕДСТАВИТЬ(или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 (с ограничениями).
Следуйте инструкции:
- Нажмите
Alt+F11, чтобы открыть редакторVBA. - В меню выберите
Insert → Module. - Вставьте этот код:
Function SheetName() As StringSheetName = ActiveSheet.Name
End Function
- Закройте редактор и вернитесь в Excel.
- В любой ячейке введите
=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); имя_файла);
имя_листа
)
Как это работает:
CELL("filename")возвращает путь к файлу.MIDиFINDизвлекают часть строки после](название листа).LETсохраняет промежуточные результаты в переменные для удобства.
🔹 Плюс метода: формула автоматически обновляется при переименовании листа или файла.
🔸 Минус: не работает в Excel 2019 и старше.
Excel 365 (подписка)|Excel 2021|Excel 2019|Excel 2016 или старше|Google Таблицы-->
4. Альтернатива для Google Таблиц: функция GOOGLEFINANCE (хак)
В Google Таблицах нет функции CELL, но есть обходной путь с использованием GOOGLEFINANCE и скриптов Apps Script. Рассмотрим оба варианта.
Способ 1: Скрипт Apps Script (аналог VBA)
- Откройте
Расширения → Apps Script. - Вставьте код:
function getSheetName() {return SpreadsheetApp.getActiveSheet().getName();
}
- Сохраните скрипт и вернитесь в таблицу.
- В любой ячейке введите
=getSheetName().
Способ 2: Формула с GOOGLEFINANCE (костыль)
Если скрипты недоступны, используйте этот трюк:
=REGEXEXTRACT(CELL("address";A1);"'(.*?)'!")
Она извлекает имя листа из адреса ячейки (например, из 'Лист1'!A1 вернёт Лист1). Но работает только если в названии листа есть апостроф (') — добавьте его вручную к имени вкладки.
5. Вставка имени листа в заголовок или колонтитул
Если вам нужно отобразить название листа на каждой странице при печати, используйте колонтитулы:
- Перейдите во вкладку
Вид → Разметка страницы. - Щёлкните по верхнему или нижнему колонтитулу.
- В панели инструментов нажмите
Название листа(иконка с символом&[Tab]). - Готово! Теперь при печати на каждом листе будет отображаться его имя.
🔹 Примечание: Этот метод не вставляет имя в ячейку, но полезен для оформления отчётов.
Помимо названия листа, в колонтитулы можно добавить: - Текущую дату: код - Текущее время: код - Номер страницы: код Просто вставьте их в поле колонтитула так же, как и Как вставить дату и время в колонтитул?
&[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). Однако вы можете скопировать имя листа вручную:
- Щёлкните правой кнопкой по вкладке листа.
- Выберите
Переименовать. - Скопируйте название (
Ctrl+C) и вставьте в ячейку (Ctrl+V).
Минус: при переименовании листа данные не обновятся автоматически.
Почему функция SheetName() возвращает имя другого листа?
Это происходит, если:
- 🔹 Вы скопировали формулу с другого листа, и она "запомнила" его имя. Обновите данные (
F9). - 🔹 В книге есть скрытые листы, и макрос сбивается. Проверьте видимость вкладок (
Главная → Формат → Скрыть/отобразить → Отобразить лист).
Решение: добавьте в код VBA строку Application.Volatile, чтобы функция всегда брала актуальное имя.
Как вставить имя листа в заголовок диаграммы?
Для этого:
- Создайте диаграмму на листе.
- Щёлкните по её заголовку.
- В строке формул введите
="Отчёт: " & SheetName()(гдеSheetName()— наша пользовательская функция).
🔹 Важно: Заголовок диаграммы не обновляется автоматически. При переименовании листа щёлкните по заголовку и нажмите Enter.
Работает ли это в Excel для Mac?
Да, но с оговорками:
- 🔹 Функция
CELL("filename")не работает в Excel для Mac. - 🔹 Макрос
VBAработает, но может требовать дополнительных разрешений в настройках безопасности. - 🔹 В Excel 365 для Mac доступна функция
LET(см. раздел 3).
Рекомендуем использовать VBA или LET для надёжности.
Можно ли вставить имя листа в условное форматирование?
Нет, условное форматирование не поддерживает пользовательские функции (включая SheetName()). Однако вы можете:
- Создать скрытую ячейку с именем листа (например,
=SheetName()вA1). - В правилах условного форматирования ссылаться на эту ячейку (например,
=$A$1="Итоги").