谷歌表格:如何从引用其他工作表的单元格提取源表名并批量填充?
提取引用单元格的工作表名称
方法1:使用原生公式(无需VBA/脚本)
直接在Priority工作表的A2单元格输入以下公式,然后向下拖拽填充即可:
=LEFT(FORMULATEXT(B2),FIND("!",FORMULATEXT(B2))-1)
公式说明:
FORMULATEXT(B2):获取B2单元格中的完整公式文本(比如你的例子中会返回=Exterior!5:5)FIND("!",FORMULATEXT(B2)):定位公式中!符号的位置LEFT(..., 位置-1):截取!符号之前的文本,也就是引用的工作表名称
方法2:自定义函数(Excel适用)
如果原生公式无法满足需求,或者你更倾向于自定义函数,可以通过VBA实现:
- 按
Alt + F11打开VBA编辑器 - 右键点击当前工作簿 → 插入 → 模块
- 粘贴以下代码:
Function GetRefSheet(cell As Range) As String Dim formulaStr As String formulaStr = cell.Formula ' 检查公式是否包含工作表引用标识"!" If InStr(formulaStr, "!") > 0 Then ' 去掉开头的"=",再截取"!"之前的内容 GetRefSheet = Mid(Replace(formulaStr, "=", ""), 1, InStr(formulaStr, "!") - 2) Else GetRefSheet = "" ' 无外部引用时返回空值 End If End Function
- 返回Excel,在A2单元格输入
=GetRefSheet(B2),向下拖拽填充即可
为什么之前的方法失败?
INDIRECT函数的作用是根据文本字符串解析单元格引用,无法反向提取现有引用的来源工作表名称,所以不适用这个场景。- 自定义函数失败通常是因为没处理公式开头的
=符号,或者未正确判断!的位置导致截取错误。
内容的提问来源于stack exchange,提问作者Sam Moore
相关产品推荐
相关产品推荐

