
Загальна формула
=GET.WORKBOOK(1)&T(NOW())
Резюме
Для переліку робочих аркушів у книзі Excel можна скористатися двоетапним підходом: (1) визначити іменований діапазон, який називається «імена аркушів», за допомогою старої команди макросів та (2) використовувати функцію INDEX для отримання імен аркушів, використовуючи названий діапазон. У наведеному прикладі формула в B5 має вигляд:
=INDEX(MID(sheetnames,FIND(")",sheetnames)+1,255),ROWS($B$5:B5))
Примітка: Я натрапив на цю формулу на дошці повідомлень MrExcel у дописі Т. Валько.
Пояснення
Іменований діапазон "імена аркушів" створюється з таким кодом:
=GET.WORKBOOK(1)&T(NOW())
GET.WORKBOOK - це макрокоманда, яка отримує масив імен аркушів у поточній книзі. Отриманий масив виглядає так:
("(workbook.xlsm)Sheet1","(workbook.xlsm)Sheet2","(workbook.xlsm)Sheet3","(workbook.xlsm)Sheet4","(workbook.xlsm)Sheet5")
Криптичний вираз поєднується з результатом:
&T(NOW())
Призначення цього коду - примусити перерахунок, щоб забрати зміни в назвах аркушів. Оскільки NOW - це нестабільна функція, вона перераховується при кожній зміні аркуша. Функція NOW повертає числове значення, що представляє дату та час. Функція T повертає порожній рядок ("") для числових значень, тому об'єднання не впливає на значення.
Повернувшись до аркуша, клітинка B6 містить скопійовану формулу:
=INDEX(MID(sheetnames,FIND(")",sheetnames)+1,255),ROWS($B$5:B5))
Працюючи зсередини, функція MID використовується для видалення імен робочого аркуша. Отриманий масив виглядає так:
("Sheet1","Sheet2","Sheet3","Sheet4","Sheet5")
Це переходить у функцію INDEX як "масив". Функція ROW використовує діапазони, що розширюються, для створення номера рядка, що збільшується. У кожному новому рядку INDEX повертає наступне значення масиву. Коли більше не буде виводитись імен аркушів, формула поверне помилку #REF.
Примітка: оскільки ця формула покладається на команду макросу, вам потрібно буде зберегти її як книгу з підтримкою макросів, якщо ви хочете, щоб формула продовжувала оновлювати імена аркушів після закриття та повторного відкриття файлу. Якщо зберегти як звичайний робочий аркуш, код імені аркуша буде видалено.