Answers:
Microsoft 解释说,您可能需要使用数组公式来获取工作表名称:
要显示当前工作表的名称,请输入以下公式作为数组公式
=RIGHT(CELL("filename"),LEN(CELL("filename"))- MAX(IF(NOT(ISERR(SEARCH("\",CELL("filename"), ROW(1:255)))),SEARCH("\",CELL("filename"),ROW(1:255)))))
其中“文件名”实际上是单词“文件名”,用引号引起来。
注意:您必须输入此公式作为数组公式。要将公式输入为数组公式,请按CTRL + SHIFT + ENTER。
另请注意,这非常依赖平台。在Mac上,您需要使用不同的公式,因为它使用了不同的路径分隔符。此外,它在OpenOffice.org和其他替代产品中的工作方式可能有所不同。在未保存的工作簿上使用时,您可能会得到#VALUE!
替代。
当不使用数组公式时,您可能会获得工作簿的名称(其文件名的最后一部分),如下所示:
仅返回工作簿的名称,如以下公式中所使用的:
=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)
首先保存文件,然后在任何地方输入此公式
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
;
而不是,
分离函数的元素时
经过M $ EXCEL和LibreOffice CALC的测试并可以工作(公式为西班牙语):
=EXTRAEB(CELDA("filename");SI(ESERROR(1+HALLAR("]";CELDA("filename")));SI(ESERROR(3+HALLAR("'#$";CELDA("filename")));0;3+HALLAR("'#$";CELDA("filename")));1+HALLAR("]";CELDA("filename")));LARGO(CELDA("filename")))
注意:这是一个庞大的公式,可以放入其他公式中或仅使用一个单元格。
我用英语想:EXTRAEB是MIDB,CELDA是CELL,SI是IF,ESERROR是ISERROR,HALLAR是FIND,LARGO是LENGTH。
如果将如此庞大的公式分成多个单元格(以避免多次调用同一单元格),那就更好了:
=CELDA("filename")
=1+HALLAR("]";<CellReferenceFor_1>)
=3+HALLAR("'#$";<CellReferenceFor_1>)
=ESERROR(<CellReferenceFor_2>;)
=ESERROR(<CellReferenceFor_3>;)
=EXTRAEB(<CellReferenceFor_1>;SI(<CellReferenceFor_4>;SI(<CellReferenceFor_5>;0;<CellReferenceFor_5>);<CellReferenceFor_4>);LARGO(<CellReferenceFor_1>))
为什么在地狱中获取工作表名称是如此复杂,而在现代电子表格中获取工作表在工作表列表中的位置却是如此容易(警告,在EXCEL 2000中,此表不存在): =HOJA(A1)
还有另一件事:为什么每种语言的功能都不同,如果我有M $ EXCEL是西班牙语和英语的CALC(更不用说俄语,中文)了,该怎么办?多么辛苦的工作,需要记住乘法成语上的所有函数名称。
在内部,它们使用特定名称保存,例如=SHEET(A1)
,与=HOJA(A1)
另存为=_xlfn.SHEET(A1)
;为什么不对所有习语使用最后一个?
或以另一种形式说:为什么如果我用英语输入它说它不是有效的函数名(如果CALC / M $ EXCEL不是英语)?
有了不会发生的M $ ACCESS和SQL函数,在西班牙语版本中,我可以在西班牙语ESNULO()
和英语上键入它们,并且ISNULL()
可以正确使用它。
如果太复杂而不能接受两者;好吧,那就只接受一个,不要本地化idom!
好了,再问一个问题,我在这个庞大公式上使用的技巧是测试是否]
存在(M $ EXCEL),否则测试是否存在'#$
(LibreOffice CALC),同时从中提取名称=CELL("filename")
。太奇怪了!
再次提出讽刺的问题:为什么要加上=SHEET(A1)
而不是=SHEETNAME(A1)
?这使我们所有人都更加努力!
在LibreOffice上,我将您的公式混合到以下内容中,并且末尾的数字20是将要显示的字符的限制:
=(SUBSTITUTE(MID((RIGHT(CELL(“文件名”)),LEN(CELL(“文件名”)))-MAX(IF(NOT(ISERR(SEARCH(“ \”,CELL(“文件名”),ROW(1 :255:255))))),SEARCH(“ \”,CELL(“文件名”),ROW(1:255:255))))))),FIND(“#$”,(RIGHT(CELL(“ filename “),LEN(CELL(” filename“))-MAX(IF(NOT(ISERR(SEARCH(” \“,CELL(” filename“),ROW(1:255:255)))),SEARCH(” \ “,CELL(”文件名“),ROW(1:255:255)))))))))+ 2,20),1,1))