Explanation
The named range «sheetnames» is created with this code:
=GET.WORKBOOK(1)&T(NOW())
GET.WORKBOOK is a macro command that retrieves an array of sheet names in the current workbook. The resulting array looks like this:
{"[workbook.xlsm]Sheet1","[workbook.xlsm]Sheet2","[workbook.xlsm]Sheet3","[workbook.xlsm]Sheet4","[workbook.xlsm]Sheet5"}
A cryptic expression is concatenated to the result:
&T(NOW())
The purpose of this code is to force recalculation to pick up changes to sheet names. Because NOW is a volatile function, it recalculates with every worksheet change. The NOW function returns a numeric value representing date and time. The T function returns an empty string («») for numeric values, so the concatenation has no effect on values.
Back on the worksheet, cell B6 contains this formula copied down:
=INDEX(MID(sheetnames,FIND("]",sheetnames)+1,255),ROWS($B$5:B5))
Working from the inside out, the MID function is used to remove the worksheet names. The resulting array looks like this:
{"Sheet1","Sheet2","Sheet3","Sheet4","Sheet5"}
This goes into the INDEX function as «array». The ROW function uses an an expanding ranges to generate an incrementing row number. At each new row, INDEX returns the next array value. When there are no more sheet names to output, the formula will return a #REF error.
Note: because this formula relies on a macro command, you’ll need to save as a macro-enabled workbook if you want the formula to continue to update sheet names after the file is closed and re-opened. If you save as a normal worksheet, the sheetname code will be stripped.
I am trying to list all sheets in an Excel workbook with a method that works for macro-free workbooks such as .xlsx files.
I am aware of the following options although both require the workbook to be saved in a file format that allows macros:
Method 1: Excel 4 Function
See this answer I posted.
Method 2: VBA
See this answer posted by another user.
Is there any option to list all sheets? If not is there any formula that names any sheet beyond the sheet containing the formula?
ZygD
21k39 gold badges77 silver badges98 bronze badges
asked Nov 1, 2019 at 19:53
4
If you have the flexibility, you can use the formula from @urdearboy in e.g. A1 on each sheet, then use a 3D reference to collect them together e.g. =TEXTJOIN(CHAR(10), FALSE,'FirstSheet:LastSheet'!A1)
and then extract from the string.
It’s a big kludge but it does work. (But at the moment I’m happy with all the sheets listed in 1 cell; A1 contains sheetname + description)
Caveat — FirstSheet & LastSheet must obviously span the range of sheets to be listed, and if they get moved around, the 3D reference may be inappropriate or break
answered Nov 26, 2020 at 14:11
Julian MooreJulian Moore
7683 gold badges9 silver badges20 bronze badges
1
This is a great question in the context of building macro-free workbooks.
To make an contents list of sheetnames, the formula from @urdearboy can be pasted in cell A1 of each sheet being indexed:
=MID(CELL(«filename»,A1),FIND(«]»,CELL(«filename»,A1))+1,255)
If cell A1 of each of these sheets is made a named range, using foo_1, foo_2, foo_3 etc as the names, the index is simply =foo_1 in the first cell of the contents range, or better =indirect(«foo_», 1), with 1 replaced by a cell reference to a number sequence.
The content list stays up-to-date, even if the sheet names are changed.
answered Jan 17 at 19:35
mer_curiusmer_curius
4926 silver badges11 bronze badges
Как создать список всех имен рабочих листов из книги?
Предположим, у вас есть книга с несколькими листами, и теперь вы хотите перечислить все имена листов в текущей книге. Есть ли какой-нибудь быстрый способ создать список имен этих листов в Excel, не вводя их один за другим? В этом руководстве приведены инструкции о том, как составить список имен листов в Excel.
- Получите список всех имен рабочих листов из книги динамически с формулами
- Получите список всех имен рабочих листов из книги с кодом VBA
- Получите список всех имен рабочих листов из книги с полезной функцией
Получите список всех имен рабочих листов из книги динамически с формулами
В Excel вы можете определить имя диапазона, а затем применить формулу для перечисления всех имен листов из текущей книги, выполните следующие действия:
1. Перейти к щелчку Формула > Менеджер имен, см. снимок экрана:
2. В Менеджер имен диалоговое окно, нажмите Новинки кнопку, см. снимок экрана:
3. В выскочившем Новое имя диалоговом окне укажите имя в поле Имя и фамилия текстовое поле, а затем скопируйте приведенную ниже формулу в Относится к текстовое поле, см. снимок экрана:
=GET.WORKBOOK(1)&T(NOW())
4. Затем нажмите OK > Закрыть чтобы закрыть диалоговые окна, перейдите к листу, на котором вы хотите перечислить все имена листов, а затем введите следующую формулу в пустую ячейку:
=IFERROR(INDEX(MID(Sheetnames,FIND(«]»,Sheetnames)+1,255),ROWS($A$2:A2)),»»)
Внимание: В приведенной выше формуле Имена листов это название диапазона, которое вы обозначили на шаге 3.
5. Затем перетащите дескриптор заполнения вниз к ячейкам, когда отображаются пустые ячейки, и теперь все имена листов текущей книги перечислены, как показано ниже:
6. Если вы хотите создать гиперссылку для каждого листа, используйте приведенную ниже формулу:
=HYPERLINK(«#'»&A2&»‘!A1″,»Go To Sheet»)
Внимание: В приведенной выше формуле A2 — это ячейка, содержащая имя листа, а A1 — это ячейка, в которой вы хотите разместить активную ячейку. Например, если вы щелкните текст гиперссылки, он найдет ячейку A1 листа.
7. Теперь, когда вы щелкните текст гиперссылки, вы перейдете на этот лист, см. Демонстрацию ниже:
Заметки:
- 1. С помощью приведенных выше формул имена созданных листов отображаются динамически, при изменении имени листа в книге имя индексного листа будет обновлено автоматически.
- 2. Вы должны сохранить файл как Excel Macro-Enabled Workbook формат, если вы хотите, чтобы формулы работали нормально после закрытия и повторного открытия файла.
Получите список всех имен рабочих листов из книги с кодом VBA
Следующие два кода VBA могут помочь вам перечислить все имена листов на новом листе. Пожалуйста, сделайте так:
1. Удерживая нажатой ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
VBA: перечислите все имена рабочих листов с гиперссылками на новом листе:
Sub CreateIndex () 'updateby Extendoffice Dim xAlerts As Boolean Dim I As Long Dim xShtIndex As Worksheet Dim xSht As Variant xAlerts = Application.DisplayAlerts Application.DisplayAlerts = False при ошибке Возобновить следующие листы («Индекс»). Удалить при ошибке GoTo 0 Установить xShtIndex = Sheets.Add (Sheets (1)) xShtIndex.Name = "Index" I = 1 Cells (1, 1) .Value = "INDEX" для каждого xSht в ThisWorkbook.Sheets Если xSht.Name <> "Index", то I = I + 1 xShtIndex. Hyperlinks.Add Cells (I, 1), "", "'" & xSht.Name & "'! A1",, xSht.Name End If Next Application.DisplayAlerts = xAlerts End Sub
2. Затем нажмите F5 ключ для запуска кода, и все имена рабочих листов в активной книге были перечислены в новый рабочий лист с именем Индекс, и имена листов также связаны с каждым листом, см. снимок экрана:
Получите список всех имен рабочих листов из книги с полезной функцией
Для Создать список имен листов утилита сторонней надстройки Kutools for Excel, вы можете создать список имен рабочих листов одним щелчком мыши и связать каждый рабочий лист гиперссылкой.
Примечание:Чтобы применить это Создать список имен листов, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.
После установки Kutools for Excel, пожалуйста, сделайте так:
1. Нажмите Кутулс Плюс > Рабочий лист > Создать список имен листов, см. снимок экрана:
2. В Создать список имен листов диалоговом окне укажите следующие параметры:
3. После завершения настроек нажмите OK. Все имена рабочих листов перечислены со ссылками на новом листе текущей книги. Смотрите скриншот:
Нажмите, чтобы загрузить и бесплатную пробную версию Kutools for Excel от Yhao сейчас!
Больше относительных статей:
- Перечислить все имена файлов в папке и создать для них гиперссылки
- Для повседневной работы вам может потребоваться импортировать несколько имен файлов из папки на рабочий лист и создать гиперссылки для каждого файла, чтобы файл открывался легко и быстро. Возможно, вы можете скопировать и вставить имена файлов и создать для них гиперссылки по одному вручную, но это потратит много времени, если в папке есть сотни файлов.
- Копирование или перемещение файлов из одной папки в другую на основе списка
- Если у вас есть список имен файлов в столбце на листе, и файлы находятся в папке на вашем компьютере. Но теперь вам нужно переместить или скопировать эти файлы, имена которых указаны на листе, из их исходной папки в другую, как показано на следующем снимке экрана. Как вы могли выполнить эту задачу так быстро, как вы можете в Excel?
- Получить список имен листов в Google Таблицах
- В этой статье я расскажу о некоторых методах получения имени текущего имени листа или списка имен листов в таблицах Google.
- Перемещение между листами с помощью раскрывающегося списка
- Предположим, у вас есть книга, содержащая несколько листов, теперь вам нужно создать раскрывающийся список или поле со списком, в котором перечислены все имена листов, и когда вы выбираете одно имя листа из раскрывающегося списка, он немедленно переходит на этот лист. В этой статье я расскажу, как перемещаться между листами с помощью раскрывающегося списка в Excel.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!