Excel 2013 VBA为Formula添加新行

时间:2018-06-14 05:52:09

标签: excel vba excel-vba

使用我的VBA代码,我在表格中添加一个新行。在表的最后一行,我有一个= Sum(SumIf(...))公式,如果我添加新行,该行将向下跳一行。

所以现在我想在公式中添加添加的行。

到目前为止,这是我的代码:

Private Sub CommandButton1_Click()
    Dim lastrow As Long
    Dim i As Integer

    lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1

    i = 4
    Do Until i = lastrow
        calc = "SUMIF($K$3:$K$19,N" & i & ",$L$3:$L$19))"
        ActiveSheet.Range("N" & lastrow + 1 & ":BI" & lastrow + 1).Formula = "=SUM(SUMIF($K$3:$K$19,N3,$L$3:$L$19)," & calc
        i = i + 1
    Loop
End Sub

事实上它工作正常,但在最后,公式看起来像这样:

= SUM(SUMIF($ķ$ 3:$ķ$ 19 N3,$ L $ 3:$ L $ 19),SUMIF($ķ$ 3:$ķ$ 19 N21,$ L $ 3:$ L $ 19) )

我必须添加哪些代码才能将每行添加到公式中?

希望有人可以帮助我。我是VBA的新手。

修改

工作表显示所有作业和工作进度。使用CommandButton我向表中添加一个新的赋值。所以现在我的表有20行,第21行是= SUM(SUMIF(..)) - 公式。如果我添加一个新的赋值,公式将转到第22行,第21行将显示新的赋值。

使用我的代码,我希望每一行都会添加到公式中。现在公式从N3到N20。如果我添加新行,N21将不会添加到公式中。使用上面的代码,它只显示第一行和最后一行。

事实上,我希望公式看起来像这样:

= SUM(SUMIF($ K $ 3:$ K $ 19,N3,$ L $ 3:$ L $ 19),SUMIF($ K $ 3:$ K $ 19,N4,$ L $ 3:$ L $ 19)...... SUMIF($ $ķ3:$ $ķ19 N21,$ L $ 3:$ L $ 19))

enter image description here

这是我的表希望它会有所帮助

1 个答案:

答案 0 :(得分:1)

这将解决您的问题。 您需要为变量" calc"分配一个值。循环之前。然后使用另一个语句在循环内添加其值。最后,不要将配方放入细胞中。在退出循环并将最后一个括号添加到公式之前的值。

clear/removeItem