
Formuła ogólna
=GET.WORKBOOK(1)&T(NOW())
Podsumowanie
Aby wyświetlić arkusze w skoroszycie programu Excel, można zastosować podejście dwuetapowe: (1) zdefiniować nazwany zakres zwany „nazwami arkuszy” za pomocą starego polecenia makra oraz (2) użyć funkcji INDEKS, aby pobrać nazwy arkuszy przy użyciu nazwanego zakresu. W przedstawionym przykładzie formuła w B5 to:
=INDEX(MID(sheetnames,FIND(")",sheetnames)+1,255),ROWS($B$5:B5))
Uwaga: natknąłem się na tę formułę na forum dyskusyjnym MrExcel w poście T. Valko.
Wyjaśnienie
Nazwany zakres „nazwy arkuszy” jest tworzony za pomocą tego kodu:
=GET.WORKBOOK(1)&T(NOW())
GET.WORKBOOK to polecenie makra, które pobiera tablicę nazw arkuszy z bieżącego skoroszytu. Wynikowa tablica wygląda następująco:
("(workbook.xlsm)Sheet1","(workbook.xlsm)Sheet2","(workbook.xlsm)Sheet3","(workbook.xlsm)Sheet4","(workbook.xlsm)Sheet5")
Do wyniku zostaje dołączone tajemnicze wyrażenie:
&T(NOW())
Celem tego kodu jest wymuszenie ponownego obliczenia w celu uwzględnienia zmian nazw arkuszy. Ponieważ NOW jest funkcją nietrwałą, przelicza się przy każdej zmianie arkusza. Funkcja TERAZ zwraca wartość liczbową reprezentującą datę i godzinę. Funkcja T zwraca pusty ciąg („”) dla wartości liczbowych, więc konkatenacja nie ma wpływu na wartości.
Z powrotem w arkuszu, komórka B6 zawiera skopiowaną formułę:
=INDEX(MID(sheetnames,FIND(")",sheetnames)+1,255),ROWS($B$5:B5))
Działając od wewnątrz, funkcja MID służy do usuwania nazw arkuszy. Wynikowa tablica wygląda następująco:
("Sheet1","Sheet2","Sheet3","Sheet4","Sheet5")
Wchodzi to do funkcji INDEKS jako „tablica”. Funkcja WIERSZ używa rozszerzających się zakresów do generowania rosnącego numeru wiersza. W każdym nowym wierszu INDEKS zwraca następną wartość tablicy. Gdy nie ma już nazw arkuszy do wyprowadzenia, formuła zwróci błąd #REF.
Uwaga: ponieważ ta formuła opiera się na poleceniu makra, musisz zapisać jako skoroszyt z włączoną obsługą makr, jeśli chcesz, aby formuła nadal aktualizowała nazwy arkuszy po zamknięciu i ponownym otwarciu pliku. Jeśli zapiszesz jako normalny arkusz, kod nazwy arkusza zostanie usunięty.