我已搜索了Excel功能文档和一般的MSDN搜索,但未能找到在没有使用VBA的情况下返回工作表名称的方法。
有没有一种方法可以在Excel公式中获取工作表名称而不需要使用VBA?
我已搜索了Excel功能文档和一般的MSDN搜索,但未能找到在没有使用VBA的情况下返回工作表名称的方法。
有没有一种方法可以在Excel公式中获取工作表名称而不需要使用VBA?
我不太擅长使用 Excel,但我在这里找到了这些。
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
并且A1
可以是工作表中的任何非错误单元格。
要获取工作表的完整路径和名称,请使用
=CELL("filename",A1)
这是一个相对较短的例子,有一些额外的好处:
Does a reverse lookup (most other answers go wrong direction) by using the often ignored REPT
function.
A1
seems like a poor choice as there's a considerably higher chance it errors
compared to... $FZZ$999999
.
Don't forget to absolute. Copying and pasting some of the other examples could error due to referential changes.
The ?
is intentional as that shouldn't be in the file path.
=SUBSTITUTE(RIGHT(SUBSTITUTE(CELL("Filename",$FZZ$999999),
"]",REPT("?", 999)), 999),"?","")
最近版本的Excel,公式语法为:
=MID(CELL("filename";A1);FIND("]";CELL("filename";A1))+1;255)
其他答案中给出的公式均不支持文件路径中包含字符]
下面的公式更为复杂,但可以正确处理这种情况:
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1),FIND("?",SUBSTITUTE(CELL("filename",A1),"\","?",LEN(CELL("filename",A1))-LEN(SUBSTITUTE(CELL("filename",A1),"\","")))))+1,LEN(CELL("filename",A1)))
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
CELL("filename")
缺少可选参数,但在这种情况下需要引用参数。使用带有对工作簿中任何单元格的引用的单元格,“修复”了预期的行为:CELL("filename"; A1)
。 - Kim我已经打开了一个模块,所以我创建了一个自定义函数:
Public Function Sheetname (ByRef acell as Range) as string
Sheetname = acell.Parent.Name
End Function
Sheetname = acell.Worksheet.Name
。 - pgSystemTester文件名中有一个方括号']',因此需要根据以下方式修改上述公式以查找方括号的最后一次出现。 验证了该方法适用于文件名/路径中0、1或多个方括号。
=RIGHT(CELL("filename"),LEN(CELL("filename")) - FIND("]]]",SUBSTITUTE(CELL("filename"),"]","]]]",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"]","")))))
=MID(CELL("filename", A1),6+SEARCH(".xlsx]",CELL("filename", A1)),32)
这里假设文件是“xlsx”格式,并且文件名不会包含“.xlsx]”以外的内容,这个假设在我的情况下是足够安全的。
如果你想处理“.xlsx”和“.xls”两种文件名,你可以使用以下代码:
=MID(SUBSTITUTE(CELL("filename", A1),".xls]",".xlsx]"),6+SEARCH(".xlsx]",SUBSTITUTE(CELL("filename", A1),".xls]",".xlsx]")),32)
In Excel it is possible to use the CELL function/formula and the MID and FIND to return the name of an Excel Worksheet in a Workbook. The formula below shows us how;
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
Where A1 is any non error cell on the Worksheet. If you want the full path of the Excel Workbook, simply use;
=CELL("filename",A1)