假设我在同一个工作簿中有“工作表 A”和“工作表 B”。
工作表 B 中有一个引用工作表“A”的单元格,即 ='Sheet A'!Q20
我想复制工作表 B 并在同一个工作簿中创建“工作表 C”,并且我希望工作表 C 中的单元格引用 (='工作表 A'!Q20) 现在引用工作表 B。即 ='工作表 B'!Q20。
当我复制工作表 B 并创建工作表 C 时,单元格引用仍然是 ='工作表 A'!Q20
我曾看到过类似问题的解决方案,但不是在同一个工作簿内复制工作表时。
短暂性脑缺血发作
答案1
答案2
ofs
您还可以定义一个简单的 UDF,它返回从当前工作表移动其位置的工作表的名称。
Function sh(ofs As Long) As String
Dim cw As Long
cw = Application.Caller.Parent.Index
sh = Worksheets(cw + ofs).Name
End Function
上一个工作表的名称为sh(-1)
,下一个工作表的名称为sh(1)
。现在,您可以通过公式
引用上一个工作表中的单元格:Q20
=INDIRECT("'"&sh(-1)&"'!Q20")
或者
=INDIRECT(ADDRESS(20,17,,,sh(-1)))