
Splošna formula
=GET.WORKBOOK(1)&T(NOW())
Povzetek
Če želite navesti delovne liste v Excelovem delovnem zvezku, lahko uporabite dvostopenjski pristop: (1) s starim ukazom makra definirajte imenovani obseg, imenovan "imena listov", in (2) s pomočjo funkcije INDEX pridobite imena listov z uporabo imenovanega obsega. V prikazanem primeru je formula v B5:
=INDEX(MID(sheetnames,FIND(")",sheetnames)+1,255),ROWS($B$5:B5))
Opomba: Na to formulo sem naletel na oglasni deski MrExcel v prispevku T. Valka.
Pojasnilo
Imenovani obseg "imen listov" je ustvarjen s to kodo:
=GET.WORKBOOK(1)&T(NOW())
GET.WORKBOOK je makro ukaz, ki pridobi matriko imen listov v trenutnem delovnem zvezku. Nastala matrika je videti tako:
("(workbook.xlsm)Sheet1","(workbook.xlsm)Sheet2","(workbook.xlsm)Sheet3","(workbook.xlsm)Sheet4","(workbook.xlsm)Sheet5")
Kriptični izraz je povezan z rezultatom:
&T(NOW())
Namen te kode je prisiliti preračun, da pobere spremembe imen listov. Ker je ZDAJ spremenljiva funkcija, se preračuna z vsako spremembo delovnega lista. Funkcija NOW vrne številčno vrednost, ki predstavlja datum in čas. Funkcija T vrne prazen niz ("") za številske vrednosti, tako da združevanje ne vpliva na vrednosti.
Nazaj na delovni list celica B6 vsebuje to kopirano formulo:
=INDEX(MID(sheetnames,FIND(")",sheetnames)+1,255),ROWS($B$5:B5))
Funkcija MID, ki deluje od znotraj navzven, se uporablja za odstranjevanje imen delovnih listov. Nastala matrika je videti tako:
("Sheet1","Sheet2","Sheet3","Sheet4","Sheet5")
To gre v funkcijo INDEX kot "matrika". Funkcija ROW uporablja razširitvene obsege za generiranje naraščajoče številke vrstice. V vsaki novi vrstici INDEX vrne naslednjo vrednost matrike. Ko ni več imen listov za izhod, bo formula vrnila napako #REF.
Opomba: ker se ta formula opira na ukaz makra, boste morali shraniti kot delovni zvezek z omogočeno makro, če želite, da formula še naprej posodablja imena listov po zaprtju in ponovnem odpiranju datoteke. Če shranite kot običajni delovni list, bo koda imena lista odstranjena.