Excel-formel: Lista arknamn med formel -

Generisk formel

=GET.WORKBOOK(1)&T(NOW())

Sammanfattning

För att lista kalkylblad i en Excel-arbetsbok kan du använda en tvåstegsmetod: (1) definiera ett namngivet intervall som heter "arknamn" med ett gammalt makrokommando och (2) använda INDEX-funktionen för att hämta arknamn med det namngivna intervallet. I exemplet som visas är formeln i B5:

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

Obs! Jag stötte på den här formeln på MrExcel-anslagstavlan i ett inlägg av T. Valko.

Förklaring

Det namngivna intervallet "arknamn" skapas med den här koden:

=GET.WORKBOOK(1)&T(NOW())

GET.WORKBOOK är ett makrokommando som hämtar en rad arknamn i den aktuella arbetsboken. Den resulterande matrisen ser ut så här:

("(workbook.xlsm)Sheet1","(workbook.xlsm)Sheet2","(workbook.xlsm)Sheet3","(workbook.xlsm)Sheet4","(workbook.xlsm)Sheet5")

Ett kryptiskt uttryck sammanlänkas till resultatet:

&T(NOW())

Syftet med den här koden är att tvinga omberäkning att plocka upp ändringar i arknamn. Eftersom NOW är en flyktig funktion, beräknar den om varje förändring av kalkylbladet. NU-funktionen returnerar ett numeriskt värde som representerar datum och tid. T-funktionen returnerar en tom sträng ("") för numeriska värden, så sammankopplingen har ingen effekt på värdena.

Tillbaka på kalkylbladet innehåller cell B6 den här formeln kopierad:

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

Arbetar inifrån och ut, MID-funktionen används för att ta bort kalkylbladets namn. Den resulterande matrisen ser ut så här:

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

Detta går in i INDEX-funktionen som "array". ROW-funktionen använder ett an expanderande intervall för att generera ett inkrementerande radnummer. Vid varje ny rad returnerar INDEX nästa matrisvärde. När det inte finns fler arknamn att mata ut returnerar formeln ett #REF-fel.

Obs! Eftersom den här formeln är beroende av ett makrokommando måste du spara som en makroaktiverad arbetsbok om du vill att formeln ska fortsätta att uppdatera arknamn efter att filen stängs och öppnas igen. Om du sparar som ett vanligt kalkylblad kommer arknamnskoden att tas bort.

Bra länkar

Herr Excel-inlägg av T. Valko

Intressanta artiklar...