我搜索了excel函数文档和一般的MSDN搜索,但是在没有VBA的情况下找不到返回工作表名称的方法。
有没有办法在excel公式中获取工作表名称而无需求助于VBA?
答案 0 :(得分:11)
excel不是很好,但我找到了这些here
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
和A1
可以是工作表中的任何非错误单元格
有关工作表的完整路径和名称,请使用
=CELL("filename",A1)
答案 1 :(得分:4)
对于最新版本的Excel,公式语法为:
=MID(CELL("filename";A1);FIND("]";CELL("filename";A1))+1;255)
答案 2 :(得分:3)
以下将隔离工作表名称:
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
答案 3 :(得分:1)
我已经打开了一个模块,所以我做了一个自定义功能:
Public Function Sheetname (ByRef acell as Range) as string
Sheetname = acell.Parent.Name
End Function
答案 4 :(得分:0)
在其他答案中给出的公式均不支持文件路径中包含字符]的情况。
以下公式较为复杂,但可以正确处理此类情况:
=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)))
答案 5 :(得分:0)
文件名中带有方括号']',因此需要根据以下内容修改以上公式,以查找最后出现的方括号。 验证此方法适用于文件名/路径中的0.1或多个方括号。
=RIGHT(CELL("filename"),LEN(CELL("filename")) - FIND("]]]",SUBSTITUTE(CELL("filename"),"]","]]]",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"]","")))))
上面关于首先保存工作簿的先前评论也是关键,因为否则您将收到#Value!结果。
答案 6 :(得分:0)
这是一个合理的简称,它有几个附加的优点:
REPT
函数进行反向查找(大多数其他答案都指向错误的方向)。 A1
似乎是一个糟糕的选择,因为与errors
相比,$FZZ$999999
的可能性要高得多。 ?
是有意的,因为它不应该位于文件路径中。 =SUBSTITUTE(RIGHT(SUBSTITUTE(CELL("Filename",$FZZ$999999), "]",REPT("?", 999)), 999),"?","")
答案 7 :(得分:-2)
我很确定你可以用谷歌搜索这个。我刚刚做了,这是我第一件事。
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)
唯一的问题是你必须保存文件才能正常工作!