# How do I access the current sheet name in formula (to use in INDIRECT) [closed]

I want to create a formula that I can use on multiple sheets that will do a vlookup on the table named the same as the current sheet. How do I access the current sheet name in the formula?

The idea is to do the following formula:

=INDIRECT("VLOOKUP(A"&COL()&","&SHEETNAME()&",2,0)")

but as far as I can tell there is no function that returns the name of a sheet.

edit retag reopen merge delete

### Closed for the following reason the question is answered, right answer was accepted by Alex Kemp close date 2015-10-30 20:54:31.883571

I was tired when I posted the question or I would have remembered that indirect only takes an address, not a formula, and given that there's no reason to indirect the local cell reference. The problem with the Sheet() approach is that I want it to be transparent - each sheet references a separate table. The SheetName range is exactly what I'm looking for, though the function actually becomes vlookup(a1,indirect(sheetname),2,0) - note that the SheetName range needs to be indirected to work.

( 2013-05-14 15:44:30 +0200 )edit

Sort by » oldest newest most voted

Hi Jim Trigg,

the JohsSUN's defined function is fine and simple, working with/without a sheet number, allowing reference between different sheets.

But your formula does not work, in the way how it is constructed. INDIRECT() function it is not an evaluator for formulas, only addresses as text are right.

The formula can be:

=VLOOKUP(INDIRECT("A"&COLUMN()),INDIRECT(MID(CELL("filename"),FIND("#$",CELL("filename"))+2,LEN(CELL("filename")))),2,0) I have replaced the defined function with a little formula, as another way to get the sheet name. As this formula to get the sheet name has not range address, there is no problem in give it a name (in the same way as you define a name for a range), for work in any sheet. Define a range as: SheetName = MID(CELL("filename"),FIND("#$",CELL("filename"))+2,LEN(CELL("filename")))
The formula:
=VLOOKUP(INDIRECT("A"&COLUMN()),SheetName,2,0)

I think easier is define a name range without the sheet name in it, what can work in any sheet. Define a range as:
DataRange = $h$1:$w$100 (e.g.)
The formula:
=VLOOKUP(INDIRECT("A"&COLUMN()),DataRange,2,0)

Sample file

more

You can use the =SHEET() function. It returns the sheet number, so you could add a sheet number column to your table and do the vlookup from it.

more

It seems to me that your SHEETNAME() is

Function SheetName(Optional nSheet)
If IsMissing(nSheet) Then
SheetName = ThisComponent.getCurrentController().getActiveSheet().getName()
Else
SheetName = ThisComponent.getSheets().getByIndex(nSheet-1).getName()
EndIf
End Function

more

Good afternoon.

JohnSUN (Apr 25 '13):

Function SheetName(Optional nSheet)...
End Function
It did the trick, for me. I just had to put: =SheetName(Row()) and get what I needed;thanks.

( 2016-07-02 20:32:16 +0200 )edit