【问题标题】:excel changing formula when I move source data - lock and protect sheet not working移动源数据时excel更改公式-锁定和保护工作表不起作用
【发布时间】:2014-07-28 00:40:16
【问题描述】:

我有一个包含母版页和每周报告页面的电子表格。每周页面应该从主表中提取前 5 列数据的范围。

问题是当我运行宏以添加新列(将数据向右移动并在左侧创建新列)时,我的所有公式都会更改以跟随刚刚向右移动的数据。

例如:每周工作表上的数据是使用从主工作表上的 D2 读取值的公式设置的。当我在主表中添加新列时,即使我使用 $E$2,它也会更改为 E2。

我能做些什么来防止这种情况发生?

这是使用安装了 Service Pack 1 的 Office 2013。

这是用于移动数据的代码:

ActiveWindow.SmallScroll Down:=30
Range("A43:A62").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-66
Range("D2").Select
Selection.Insert Shift:=xlToRight
Range("D2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RC[1]+7"
Range("D2").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

【问题讨论】:

    标签: vba excel locking protected


    【解决方案1】:

    我不知道在插入这样的单元格时如何防止引用移动。因此,我知道让您的主工作表引用单元格 D2 的唯一方法是在将单元格添加到周报告后,使用宏在主工作表上重新输入公式。

    试试这样的:

    Dim ws As Worksheet
    Dim ms As Worksheet
    
    Set ws = Worksheets("Weekly Report")
    Set ms = Worksheets("Master Report")
    
    'Your other code goes here
    
    ms.Range("A1") = "=" & ws.Name & "$D$2"
    

    这假定 A1 是主工作表上引用 D2 的单元格。

    【讨论】:

    • 我试过这个,但是我最终只是在参考页面上做了一个简单的复制功能来显示我最近的一组数据。这样我就跳过了看起来更复杂的脚本。感谢您的回复
    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多