MS Excel自动填充不正确的公式添加行时

我已经在Excel 2010中定义了一系列单元格作为表格。我保留工作表,以便其他用户不会错误地更改公式。 我不得不使用绑定到button的macros来允许其他用户在工作表被locking时添加行。 但是,我注意到,当我通过button添加行时,它会自动填充列I中的不正确的公式。这是一个我最初input的公式,但后来改变了。 我也注意到,当我解锁表格并简单地向下拖动表格的右下angular时,它将在某些行中放入正确的公式,在其他行中放入不正确的公式,甚至交替哪些行具有正确的公式。

您可能需要回答的其他信息:

  • 表格包括A到I列
  • 当前列I中的公式为: =IF(G21=0," ",IF(G21="yes",I20+D21+H21,D21+(I20-F21)))
  • 在列I中不再使用的旧公式: =IF(G24=0," ",IF(G24="yes",F20+H24,F20-F24))
  • 使用的macros是:

  Sub AddRow() ActiveSheet.Unprotect Password:="secret" Range("A1").End(xlDown).ListObject.ListRows.Add AlwaysInsert:=False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="secret" End Sub 

这是什么工作:

  • 在开发人员选项卡上,单击loggingmacros。
  • 命名macros并input说明,然后单击确定。
  • 解锁表单,
  • select总计行,
  • 右键单击并select上面的添加行,
  • select总计行上方列I中的最后一个单元格,然后单击Ctrl + D
  • locking工作表。

    macros的VBA代码如下所示:

     Sub AddRowAndCopyFormula() ' ' AddRowAndCopyFormula Macro ' Add one new row and copy correct formula in Column I. ' 

    Sub AddRowAndCopyFormula() ' ' AddRowAndCopyFormula Macro ' Add one new row and copy correct formula in Column I. '


    ActiveSheet.Unprotect
    范围( “表3 [#Totals]”)。select
    Selection.ListObject.ListRows.Add(17)
    范围( “I24”)。select
    Selection.FillDown
    ActiveSheet.Protect DrawingObjects:= True,内容:= True,scheme:= True _
    ,AllowFormattingCells:= True
    结束小组

    感谢所有帮助过我的人!

  • 我也有这个问题。 我select了表中的整个列,删除了所有(新)公式,右键单击并select“清除内容”。 然后重新将我的新公式添加到列中。 这样做后,插入一个新的行(使用我的“行插入”macros),新的公式被autocopied到新的行。 不知道该解决scheme有多强大,但我不想开始摆弄我的(简单)“行插入”macros

    你能否详细说明插入行中的公式究竟有什么问题? 是不是行被错误地引用?

    作为一个潜在的解决方法,你可以添加这一行来重新填写公式?

     Range("I2:I" & Range("A1").End(xlDown).row).filldown 

    将I2与表格中的第一个单元格replace为其中的公式