При работе с книгами Excel, содержащими десятки листов, поиск нужного таба превращается в утомительное занятие — особенно если имена не стандартизированы или дублируются. Список листов в отдельном листе или выпадающем меню решает эту проблему, позволяя мгновенно переходить к любому разделу файла. Однако встроенной функции для автоматического создания такого оглавления в Microsoft Excel нет, поэтому пользователям приходится использовать обходные пути: от простого копирования вручную до написания макросов на VBA.
Самый быстрый способ — воспользоваться формулой на основе функции GET.WORKBOOK (доступна только в Excel для Windows через Имя менеджера), но она требует предварительной настройки. Альтернативные методы — Power Query (без макросов), надстройка Kutools, или скрипт на VBA — подходят для разных версий программы, включая Excel Online и MacOS. Ниже разберём каждый вариант с пошаговыми инструкциями и нюансами применения.
1. Ручной метод: копирование имён листов в столбец
Если в книге не больше 10–15 листов, а обновлять их список придётся редко, проще всего вручную перенести имена в отдельный лист. Этот способ не требует знаний формул или макросов, но уязвим к ошибкам при добавлении/удалении листов. Подходит для одноразовых отчётов или небольших файлов.
Алгоритм действий:
- 📋 Создайте новый лист в книге (назовите его, например, «Оглавление»).
- 🔍 Перейдите на первый рабочий лист, скопируйте его имя из вкладки внизу экрана (
Ctrl+C). - 📑 Вставьте имя в ячейку
A1листа «Оглавление» (Ctrl+V). - 🔄 Повторите шаги 2–3 для всех остальных листов, заполняя столбец
A. - 🔗 Преобразуйте список в гиперссылки: выделите ячейки с именами → правая кнопка →
Ссылка→ укажите адрес листа в формате'ИмяЛиста'!A1.
Чтобы ускорить процесс, используйте горячие клавиши: Ctrl+PageUp/PageDown для переключения между листами. Для больших книг этот метод займёт слишком много времени — лучше выбрать автоматизированные решения из следующих разделов.
⚠️ Внимание: При ручном копировании легко пропустить лист или допустить опечатку в имени. Всегда проверяйте итоговый список на полноту, сравнивая количество строк с реальным числом листов (посмотреть его можно в правой части панели вкладок).
2. Формула GET.WORKBOOK: скрытая функция Excel для Windows
Функция GET.WORKBOOK — это уникальный инструмент, доступный только в Excel для Windows (не работает в MacOS или Excel Online). Она возвращает массив данных о книге, включая имена листов, но не отображается в мастер-функций. Чтобы ею воспользоваться, придётся вручную добавить имя через Диспетчер имён.
Инструкция по настройке:
- Перейдите на вкладку
Формулы→Диспетчер имён→Создать. - В поле
ИмявведитеListSheets(или любое другое). - В поле
Диапазонвставьте формулу:=GET.WORKBOOK(1) - Нажмите
OKи закройте диспетчер. - На листе «Оглавление» в ячейке
A1введите:=IFERROR(INDEX(ListSheets,ROW(A1)),"")и растяните формулу вниз до появления пустых ячеек.
Формула вернёт список имён листов в формате [Книга1.xlsx]Лист1. Чтобы оставить только имя листа, оберните её в функцию MID:
=MID(IFERROR(INDEX(ListSheets,ROW(A1)),"");FIND("]",IFERROR(INDEX(ListSheets,ROW(A1)),""))+1;99)
| Преимущества метода | Ограничения |
|---|---|
| Автоматическое обновление при добавлении/удалении листов | Работает только в Excel для Windows |
| Не требует макросов или надстроек | Сложный синтаксис для новичков |
| Можно интегрировать с гиперссылками | Имена с пробелами или спецсимволами могут отображаться некорректно |
3. Power Query: универсальный способ для всех версий Excel
Power Query (в новых версиях — Get & Transform Data) позволяет извлечь имена листов без макросов и работает во всех версиях Excel, включая MacOS и Excel Online. Метод основан на создании запроса к структуре книги и преобразовании данных в таблицу.
Пошаговая инструкция:
- 📊 Перейдите на вкладку
Данные→Получить данные→Из других источников→Пустой запрос. - 🔧 В открывшемся редакторе Power Query введите в строку формул:
=Excel.CurrentWorkbook()и нажмите
Enter. - 📋 В появившейся таблице выберите столбец
Name(имена листов) → удалите остальные столбцы. - 🔄 Нажмите
Закрыть и загрузить в...→ выберитеТаблица→ укажите лист «Оглавление» и ячейкуA1.
Чтобы преобразовать список в кликабельные гиперссылки, добавьте вспомогательный столбец с формулой:
=HYPERLINK("#'" & A1 & "'!A1", A1)
⚠️ Внимание: Power Query не обновляет данные в реальном времени. После добавления/удаления листов необходимо вручную обновить запрос: правая кнопка по таблице → Обновить.
4. VBA-скрипт: автоматическое обновление за 1 клик
Для пользователей, готовых работать с макросами, VBA предлагает самое гибкое решение. Скрипт не только создаёт список листов, но и обновляет его при каждом открытии книги или по команде. Подходит для крупных проектов с частыми изменениями структуры.
Код для вставки в редактор VBA:
Sub CreateSheetList()
Dim ws As Worksheet, wsList As Worksheet
Dim i As Integer, lastRow As Integer
' Создаём лист для оглавления (или очищаем существующий)
On Error Resume Next
Set wsList = ThisWorkbook.Sheets("Оглавление")
If wsList Is Nothing Then
Set wsList = ThisWorkbook.Sheets.Add(Before:=ThisWorkbook.Sheets(1))
wsList.Name = "Оглавление"
Else
wsList.Cells.Clear
End If
On Error GoTo 0
' Заголовок таблицы
wsList.Range("A1").Value = "Список листов"
wsList.Range("A1").Font.Bold = True
' Перебор всех листов и запись имён
i = 2
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Оглавление" Then
wsList.Cells(i, 1).Value = ws.Name
' Создаём гиперссылку
wsList.Hyperlinks.Add Anchor:=wsList.Cells(i, 1), _
Address:="", SubAddress:="'" & ws.Name & "'!A1", _
TextToDisplay:=ws.Name
i = i + 1
End If
Next ws
' Автоподбор ширины столбца
wsList.Columns(1).AutoFit
End Sub
Как запустить скрипт:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в модуль (
Insert→Module). - Закройте редактор и вернитесь в Excel.
- Запустите макрос через
Вид→Макросы→ выберитеCreateSheetList→Выполнить.
Включите макросы в настройках Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы)|Сохраните файл в формате .xlsm (с поддержкой макросов)|Проверьте, нет ли в книге листа с именем "Оглавление" (скрипт его перезапишет)|Закройте все диалоговые окна перед запуском макроса-->
5. Надстройка Kutools: решение для новичков
Если формулы и макросы кажутся сложными, надстройка Kutools for Excel предлагает готовый инструмент Create List of Sheet Names. Она платная (от $39 за лицензию), но предоставляет 60-дневный пробный период. Подходит для пользователей, которым нужно быстрое и визуальное решение без технических навыков.
Как использовать:
- 📥 Скачайте и установите Kutools с официального сайта.
- 🔧 Перейдите на вкладку
Kutools Plus→Workbook→Create List of Sheet Names. - 📋 В диалоговом окне выберите:
- 📄 Лист для размещения списка (например, «Оглавление»);
- 🔗 Формат вывода (гиперссылки или обычный текст);
- 🔢 Порядок сортировки (по алфавиту или как в книге).
- 🖱️ Нажмите
OK— список будет сгенерирован автоматически.
Преимущество Kutools — возможность обновлять список одним кликом (Refresh Sheet Names List), а также дополнительные функции для работы с листами (например, групповой переименование). Однако надстройка увеличивает размер файла и может конфликтовать с другими плагинами.
Альтернативные надстройки для создания списка листов
ASAP Utilities (бесплатная версия с ограничениями) — включает инструмент Sheet → Create a list of all sheets.
Ablebits — плагин с функцией Sheet List, интегрированной в ленту Excel.
ExcelJet Tools — бесплатная надстройка с открытым исходным кодом для генерации оглавления.
6. Динамические массивы (Excel 365 и 2021): современный подход
В последних версиях Excel 365 и Excel 2021 появилась поддержка динамических массивов, которые позволяют создавать автоматически обновляемые списки без VBA или Power Query. Для этого используется комбинация функций LAMBDA, BYROW и TEXTAFTER.
Формула для ячейки A1:
=DROP(
TEXTAFTER(
FORMULATEXT(
LAMBDA(x,
BYROW(
x,
LAMBDA(r, "'" & r & "'!A1")
)
)(GET.WORKBOOK(1))
),
"]",
-1
),
1
)
Как это работает:
GET.WORKBOOK(1)извлекает данные о книге, включая имена листов.FORMULATEXTиLAMBDAпреобразуют их в массив.TEXTAFTERудаляет техническую часть строки (название книги).DROPубирает первую строку с заголовком.
Результат — динамический список, который обновляется при изменении структуры книги. Чтобы сделать его кликабельным, добавьте столбец с гиперссылками:
=HYPERLINK("#" & A1#; A1#)
⚠️ Внимание: Динамические массивы работают только в Excel 365 и Excel 2021. В более ранних версиях формула вернёт ошибку#ИМЯ?. Также избегайте использования спецсимволов в именах листов (например,'или!), чтобы не сломать синтаксис гиперссылок.
Сравнение методов: какой выбрать?
| Метод | Сложность | Автообновление | Поддерживаемые версии | Требуемые навыки |
|---|---|---|---|---|
| Ручной ввод | ⭐ | ❌ Нет | Все версии | Базовые знания Excel |
GET.WORKBOOK |
⭐⭐ | ✅ Да | Excel для Windows | Знание формул |
| Power Query | ⭐⭐⭐ | ✅ (вручную) | Excel 2016+ | Опыт работы с запросами |
| VBA | ⭐⭐⭐⭐ | ✅ Да | Все версии | Знание основ VBA |
| Kutools | ⭐ | ✅ (по кнопке) | Все версии | Нет |
| Динамические массивы | ⭐⭐⭐ | ✅ Да | Excel 365/2021 | Знание новых функций |
Выбор метода зависит от версии Excel, частоты обновлений и уровня подготовки:
- 🏆 Для одноразовых задач подойдёт ручной ввод или Kutools.
- 🔄 Для регулярного использования в Excel для Windows оптимален
GET.WORKBOOK. - 💻 Для кроссплатформенных решений (включая MacOS) выбирайте Power Query.
- 🛠️ Для полной автоматизации в крупных проектах напишите VBA-скрипт.
- 🚀 В Excel 365/2021 используйте динамические массивы — это будущее формул.
FAQ: Частые вопросы по работе со списками листов
🔹 Можно ли создать выпадающий список листов для быстрого перехода?
Да, для этого:
- Создайте список листов любым из описанных методов.
- Выделите ячейку для выпадающего меню →
Данные→Проверка данных. - В поле
Тип данныхвыберитеСписок. - В
Источникукажите диапазон с именами листов (например,=Оглавление!$A$2:$A$100). - Добавьте гиперссылку через функцию
=HYPERLINK("#'" & B1 & "'!A1"; B1), гдеB1— ячейка с выпадающим списком.
🔹 Почему функция GET.WORKBOOK не работает в моём Excel?
Вероятные причины:
- Вы используете Excel для Mac или Excel Online — функция доступна только в Windows-версии.
- Неправильно создано имя в Диспетчере имён (проверьте синтаксис:
=GET.WORKBOOK(1)). - Книга сохранена в формате
.xlsx— пересохраните как.xlsm(хотя макросы здесь не нужны, иногда помогает). - Отключены динамические массивы (для Excel 365):
Файл→Параметры→Формулы→ включитеДинамические массивы.
🔹 Как обновить список листов после добавления новых листов?
Способы обновления в зависимости от метода:
| Метод | Действие для обновления |
|---|---|
| Ручной ввод | Добавьте новые имена вручную. |
GET.WORKBOOK |
Формула обновляется автоматически. |
| Power Query | Правая кнопка по таблице → Обновить. |
| VBA | Запустите макрос повторно (Alt+F8 → выберите CreateSheetList). |
| Kutools | На вкладке Kutools → Refresh Sheet Names List. |
🔹 Можно ли создать список листов в Google Таблицах?
В Google Sheets нет прямого аналога GET.WORKBOOK, но список листов можно получить с помощью Google Apps Script:
- Откройте
Расширения→Apps Script. - Вставьте код:
function listSheets() {var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var output = [];
sheets.forEach(function(sheet) {
output.push([sheet.getName()]);
});
SpreadsheetApp.getActiveSheet().getRange("A1").setValues(output);
}
- Сохраните скрипт и запустите его из меню
Выполнить.
Для гиперссылок используйте формулу:
=HYPERLINK("#gid=" & MATCH(A1; INDEX(GET.SHEETNAMES()); 0); A1)
🔹 Как скрыть технические листы (например, «Оглавление») из списка?
Исключите ненужные листы с помощью условий:
- В формуле добавьте проверку:
=IF(OR(A1="Оглавление"; A1="Служебный"); ""; A1) - В VBA-скрипте добавьте условие:
If ws.Name <> "Оглавление" And ws.Name <> "Служебный" Then - В Power Query отфильтруйте строки после загрузки данных.