复制整个工作表时,如何修复 Excel 单元格引用的工作表名称部分?

复制整个工作表时,如何修复 Excel 单元格引用的工作表名称部分?

我想引用工作表中的另一个单元格,这样当我复制工作表时,我仍然指向原始工作表上的单元格。如果引用的是不同工作表上的单元格,则在复制工作表时会保留工作表名称,但如果引用在同一工作表中,则在复制工作表时,Excel 会将工作表名称更改为目标工作表。

我尝试定义一个单元格名称,使其范围为整个工作簿,并通过名称引用该单元格,但是,当我复制工作表时,Excel“有帮助地”创建一个重复的名称,其范围仅为目标工作表。

我知道我可以使用“间接”函数来引用一个单元格,该单元格的引用在复制工作表时不会改变,但我不想这样做,因为如果对包含该单元格的工作表进行任何结构更改,它就会失败。

应用程序要求对每张工作表进行连续复制,以跟踪一段时间内的数据快照,但一方面,我总是想引用原始工作表上的单元格。工作簿的模板只包含原始工作表,等待初始数据,然后将初始数据复制到新工作表中进行下一次数据迭代。有人能帮我找到一种合适的单元格引用技术吗?这种技术不需要重新设计应用程序。

答案1

我不确定我是否完全理解您的要求/限制,但无论如何我都会建议这样做。定义一个 VBA 函数

Function Original(Ref)
    Application.Volatile
    With Application.Caller.Parent
        Original = .Parent.Sheets(1).Range(Ref.Address)
    End With
End Function

1将中的替换Sheets(1)为您要引用的工作表的编号或其名称,例如Sheet("PeterK_Master")。现在,如果您想要一个可复制的引用Sheet1!Q42,只需说Original(Q42)。如果您在 左侧插入列Q或在 上方插入行42 (这就是您想要的,对吗?),这将自动更新。并且,如果您复制/拖动它,它将像任何其他相对(同一工作表)引用一样自动更新;当然,您可以使用$s 来停止它。

相关内容