如何在Excel各工作表相同单元格批量输入公式返回对应工作表名称
批量设置Excel各工作表C2显示对应工作表名称的解决方法
问题原因
你使用的原公式=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))未指定CELL函数的引用单元格,批量选中工作表输入后,所有单元格都会读取当前活动工作表的文件名,导致显示同一个名称。
解决方法
方法1:修改原公式,绑定当前单元格
选中所有目标工作表(按住Ctrl+Shift点击首尾工作表标签),在C2单元格输入以下公式,按回车即可:
=RIGHT(CELL("filename",C2),LEN(CELL("filename",C2))-FIND("]",CELL("filename",C2)))
原理:给CELL函数添加当前单元格C2作为引用参数,强制每个工作表的公式读取自身所在表的文件名,而非活动表的信息。
方法2:使用自定义名称统一管理
- 按下
Ctrl+F3打开「名称管理器」,点击「新建」 - 名称栏输入
SheetName,引用位置输入:
点击「确定」保存名称=RIGHT(CELL("filename",!A1),LEN(CELL("filename",!A1))-FIND("]",CELL("filename",!A1))) - 选中所有工作表,在C2输入
=SheetName并回车,每个工作表的C2会自动显示对应名称
方法3:VBA批量设置(静态/动态可选)
如果需要一次性完成且可选静态文本(不随表名修改更新)或动态公式(随表名修改自动更新),可以用VBA:
- 按下
Alt+F11打开VBA编辑器,右键左侧工程窗口的工作簿名称→「插入」→「模块」 - 粘贴以下代码:
Sub SetSheetNameToC2() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ' 动态公式(随表名修改自动更新) ws.Range("C2").Formula = "=RIGHT(CELL(""filename""),LEN(CELL(""filename""))-FIND(""]"",CELL(""filename"")))" ' 静态文本(直接赋值表名,不自动更新) ' ws.Range("C2").Value = ws.Name Next ws End Sub - 按
F5运行代码,所有工作表的C2会自动填充对应名称
内容的提问来源于stack exchange,提问作者PHegde
相关产品推荐
相关产品推荐

