我搜索了 excel 函数文档和一般 MSDN 搜索,但一直无法找到无需 VBA 即可返回工作表名称的方法。
有没有办法在不需要求助于 VBA 的情况下在 Excel 公式中获取工作表名称?
excel 不太好,但我找到了这些here
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
和
A1
可以是工作表中的任何非错误单元格。=CELL("filename",A1)
这是一个 reasonably 短的,有几个额外的好处:
通过使用经常被忽略的
REPT
函数进行反向查找(大多数其他答案都是错误的方向)。
A1
似乎是一个糟糕的选择,因为它的机会要高得多errors
与...$FZZ$999999
.
别忘了绝对。由于参考更改,复制和粘贴其他一些示例可能会出错。
?
是故意的,因为它不应该在文件路径中。
=SUBSTITUTE(RIGHT(SUBSTITUTE(CELL("Filename",$FZZ$999999),
"]",REPT("?", 999)), 999),"?","")
下面将隔离工作表名称:
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
对于最新版本的 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)))
我已经打开了一个模块,所以我做了一个自定义函数:
Public Function Sheetname (ByRef acell as Range) as string
Sheetname = acell.Parent.Name
End Function
文件名中有一个方括号']',因此需要按照以下修改上面的公式以找到最后一次出现的方括号。 验证这适用于文件名/路径中的 0,1 个或更多方括号。
=RIGHT(CELL("filename"),LEN(CELL("filename")) - FIND("]]]",SUBSTITUTE(CELL("filename"),"]","]]]",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"]","")))))
之前关于先保存工作簿的评论也是一个关键,否则您将收到#Value!结果。
以下对我有用,并且比其他解决方案更简单(至少对我而言),同时仍在处理文件名中的方括号:
=MID(CELL("filename", A1),6+SEARCH(".xlsx]",CELL("filename", A1)),32)
这假设它是一个“xlsx”文件,并且文件名除了 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)
唯一的问题是你必须保存文件才能工作!