我正在尝试使用公式查看我正在处理的 Excel 电子表格中的文件名。例如,如果文件名为 workbook1.xlsx,那么我希望单元格 A1 显示“workbook1.xlsx”
微软帮助网站提供的公式不起作用: http://office.microsoft.com/en-us/excel-help/插入当前excel文件名路径或工作表单元格中的HA010103010.aspx#BMinsert3
=MID(CELL("文件名"),SEARCH(“[”,CELL("文件名"))+1, SEARCH("]",CELL("文件名"))-SEARCH(“[”,CELL("文件名"))-1)
答案1
它在这里起作用,我刚刚在 Excel 2007 (XP) 和 Excel 2013 (Windows 8) 上进行了测试。
先单独尝试=CELL("filename")
以帮助排除故障。
确保已将工作簿保存到磁盘。如果将公式放入新的未保存的工作簿中,则不会显示“Book1”。
您的计算机上是否使用了非英语区域设置?某些语言需要调整函数名称和公式语法(例如,在法语中,逗号必须替换为分号)。
您使用的是个人电脑还是办公电脑?如果是办公电脑,可能存在用户权限限制导致的问题。
当您说“它不起作用”时,您能更具体一点吗?它是否接受键入的公式?单元格是否为空,显示“#VALUE!”等?仅使用时会发生什么=CELL("filename")
?
答案2
请注意,这=CELL("filename")
为您提供了上次更改的工作簿/工作表因此,如果您打开了 2 个工作簿,abc 和 xyz,并且您的公式在 abc 中,如果您最后更改了 xyz 中的值,则 abc 中的公式将反映该更改并返回xyz.xlsx
因此,通常最好包含单元格引用(任何单元格引用),例如
=CELL("文件名",A1)
使用该版本意味着您将只能获得公式所在工作簿的工作簿名称。
您可以使用这个稍短的版本
=REPLACE(LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1))-1),1,FIND("[",CELL("filename",A1)),"")
答案3
我发现这是返回文件名仅有的:
=REPLACE(LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1))-1),1,FIND("[",CELL("filename",A1)),"")
or - created in VBA:
Formula = "=REPLACE(LEFT(CELL(""filename"",A1),FIND(""]"",CELL(""filename"",A1))-1),1,FIND(""["",CELL(""filename"",A1)),"""")"
要返回完整路径,这将执行:
=SUBSTITUTE(LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1))-1),"[","")
or - created in VBA:
Formula = "=SUBSTITUTE(LEFT(CELL(""filename"",A1),FIND(""]"",CELL(""filename"",A1))-1),""["","""")"
答案4
更简单的解决方案是这样的:
在 Excel 文件中按Alt+ F11,打开 Microsoft Visual Basics for Applications (VBA)。在 VBA 中选择Insert > Module
并粘贴以下代码
Public Function GetMyProp(prop As String) As String
GetMyProp = ThisWorkbook.BuiltinDocumentProperties(prop)
End Function
在 Excel 文件中输入公式:=GetMyProp("Title")
。这将在所选单元格中显示文档的标题。