什么 Excel 公式返回工作表名称?

问题描述 投票:0回答:9

我搜索了 excel 函数文档和一般 MSDN 搜索,但一直无法找到无需 VBA 即可返回工作表名称的方法。

有没有办法在不需要求助于 VBA 的情况下在 Excel 公式中获取工作表名称?

excel-formula excel-2013
9个回答
22
投票

excel 不太好,但我找到了这些here

=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)

A1
可以是工作表中的任何非错误单元格。
对于工作表的完整路径和名称,请使用

=CELL("filename",A1)

7
投票

这是一个 reasonably 短的,有几个额外的好处:

  • 通过使用经常被忽略的

    REPT
    函数进行反向查找(大多数其他答案都是错误的方向)。

  • A1
    似乎是一个糟糕的选择,因为它的机会要高得多
    errors
    与...
    $FZZ$999999
    .

  • 别忘了绝对。由于参考更改,复制和粘贴其他一些示例可能会出错。

  • ?
    是故意的,因为它不应该在文件路径中。

    =SUBSTITUTE(RIGHT(SUBSTITUTE(CELL("Filename",$FZZ$999999), 
    "]",REPT("?", 999)), 999),"?","")
    

4
投票

下面将隔离工作表名称:

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))

4
投票

对于最新版本的 Excel,公式语法为:

=MID(CELL("filename";A1);FIND("]";CELL("filename";A1))+1;255)

4
投票

如果文件路径中有字符],其他答案中给出的公式都不支持这种情况。

下面的公式比较复杂,但是可以很好的处理这样的情况:

 =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)))

1
投票

我已经打开了一个模块,所以我做了一个自定义函数:

Public Function Sheetname (ByRef acell as Range) as string
Sheetname = acell.Parent.Name 
End Function 

0
投票

文件名中有一个方括号']',因此需要按照以下修改上面的公式以找到最后一次出现的方括号。 验证这适用于文件名/路径中的 0,1 个或更多方括号。

=RIGHT(CELL("filename"),LEN(CELL("filename")) - FIND("]]]",SUBSTITUTE(CELL("filename"),"]","]]]",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"]","")))))
  1. 使用替换函数替换所有方括号,然后将结果的长度与文件名的长度进行比较,以确定文件名中方括号的个数。
  2. 使用方括号的出现次数将最后一个方括号替换为3个连续的方括号']]]'
  3. 使用Find函数找出字符串中3个方括号的位置
  4. 从完整路径的长度中减去 3 个方括号的位置
  5. 使用结果获取最正确的字符(即工作表名称)

之前关于先保存工作簿的评论也是一个关键,否则您将收到#Value!结果。


0
投票

以下对我有用,并且比其他解决方案更简单(至少对我而言),同时仍在处理文件名中的方括号:

=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)

-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)

唯一的问题是你必须保存文件才能工作!

© www.soinside.com 2019 - 2024. All rights reserved.