Формула на Excel: Избройте имената на листа с формула -

Обща формула

=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 връща цифрова стойност, представляваща дата и час. Функцията T връща празен низ ("") за числови стойности, така че конкатенацията няма ефект върху стойностите.

Обратно на работния лист, клетка B6 съдържа тази формула, копирана надолу:

=INDEX(MID(sheetnames,FIND(")",sheetnames)+1,255),ROWS($B$5:B5))

Работейки отвътре навън, функцията MID се използва за премахване на имената на работния лист. Полученият масив изглежда така:

("Sheet1","Sheet2","Sheet3","Sheet4","Sheet5")

Това влиза във функцията INDEX като "масив". Функцията ROW използва разширяващи се диапазони, за да генерира нарастващ номер на ред. На всеки нов ред INDEX връща следващата стойност на масива. Когато няма повече имена на листове за извеждане, формулата ще върне грешка #REF.

Забележка: тъй като тази формула разчита на макро команда, ще трябва да запишете като работна книга с активиран макрос, ако искате формулата да продължи да актуализира имената на листове, след като файлът бъде затворен и отворен отново. Ако запишете като обикновен работен лист, кодът на името на листа ще бъде премахнат.

Добри връзки

Г-н Excel съобщение на форума на Т. Вълко

Интересни статии...