In Excel: use =TEXTAFTER(CELL("filename", A1), "]") on Microsoft 365, or =MID(CELL("filename",A1), FIND("]", CELL("filename",A1))+1, 255) in any version — and save the file first, because CELL("filename") returns an empty string until it has been saved.
Save the workbook — CELL("filename") returns an empty string until the file exists on disk.
On Microsoft 365: =TEXTAFTER(CELL("filename", A1), "]").
On older versions: =MID(CELL("filename",A1), FIND("]", CELL("filename",A1))+1, 255).
Always pass the second argument (A1). Without it the result follows the last-calculated sheet, not this one.
For the file name instead: =TEXTBEFORE(TEXTAFTER(CELL("filename",A1),"["),"]").
Wrap it in IFERROR if the workbook may be used before its first save.
What this does
Excel has no SHEETNAME function. The only route is CELL("filename", A1), which returns the full path in the form C:\Reports\[Budget.xlsx]January — path, file name in square brackets, then the sheet name. Everything after the closing bracket is the sheet name, so the formula is one text extraction. Three details decide whether it works. The second argument matters: CELL("filename") with no reference returns the name of whichever sheet was last calculated, which on a multi-sheet workbook gives the wrong answer at unpredictable times — always pass a cell on the sheet you mean, such as A1. The workbook must have been saved at least once, or the function returns "". And CELL is volatile, so it recalculates on every change in the workbook; on a sheet with hundreds of these it is worth noticing. To get the file name instead, take the text between the brackets; to list every sheet name, Power Query or a small macro is the practical route. The same idea underpins a lot of everyday Excel work, so the few minutes spent getting it right here pay back across every sheet you build afterwards. Treat it as a pattern, not a one-off, and it stops being something you look up and starts being something you reach for. For “excel get sheet name”, the reliable version is a short checking loop, not just the first command that appears to work. Run it on a deliberately small range first, watch how the affected sheet change, and only then apply the same setup to the full sheet. When a formula is involved, keep the inputs labelled beside it, reference cells instead of typing values, and apply number formatting only after the result checks out. That is what makes a text operation that turns messy entries into clean, usable data useful in real work: repeatable, auditable, and not dependent on memory or luck.
A worked example
On a sheet named January in Budget.xlsx: =CELL("filename", A1) returns C:\Reports\[Budget.xlsx]January. =TEXTAFTER(CELL("filename", A1), "]") returns January. Rename the tab to Jan-2026 and the cell updates by itself, which is why a report header built this way can never disagree with the tab it sits on. A report header that reads its own tab name cannot go stale, which is exactly what a typed one does the first time someone renames the sheet. One habit worth forming early: name the cells that hold your inputs, so the formula reads in plain language instead of a string of cell addresses. A reviewer — or you in three months — can then follow the logic without decoding what B7 and D2 were supposed to mean, which is most of what makes a sheet maintainable.
In Google Sheets
Everything above works in Google Sheets too. Excel and Sheets share the formula syntax used here; only the surrounding menus are arranged differently. That portability is deliberate — learn it once and it follows you between the two tools and across Windows and Mac. The aim was to get you unstuck fast and leave you a little more capable than a copy-paste would. The answer is at the top, the tool proves it, and the detail above shows why it holds — so the next time a colleague asks, you can answer without reaching for search. Treat “excel get sheet name” as a small building block rather than a chore. Once the inputs sit in their own cells and the formula reads from them, the same setup answers a dozen related questions with a tweak, and Excel keeps every dependent figure current as the data changes. The tool above is there so you can rehearse and verify before committing anything to a real workbook; the steps and worked example are there so the logic sticks. Get it right once and it stops costing you time — it starts saving it, every time the question comes back around.
Common mistakes
- Omitting the cell reference, which produces a name that changes as other sheets recalculate.
- Testing in an unsaved workbook and concluding the formula is wrong when it is returning "" correctly.
- Expecting a SHEETNAME function to exist — SHEET() returns the index number, not the name.
- Putting hundreds of CELL calls on one sheet and adding a volatile recalculation to every keystroke.
- Hard-coding the sheet name into a title instead, which then silently disagrees with the tab after a rename.
Frequently asked questions
How do I get the sheet name in a formula?
=TEXTAFTER(CELL("filename", A1), "]") on Microsoft 365, or the MID/FIND version in older releases. The workbook must have been saved.
Why does my sheet-name formula return nothing?
The workbook has never been saved, so CELL("filename") has no path to report. Save it once and the formula fills in.
Why does the wrong sheet name appear?
The formula omits the second argument. CELL("filename") alone reports the last-calculated sheet; CELL("filename", A1) reports this one.
How do I get the file name instead of the sheet name?
Take the text between the square brackets: =TEXTBEFORE(TEXTAFTER(CELL("filename",A1),"["),"]").
Other ways people ask this
This guide also answers
- get worksheet name excel