使用VBA动态求和

时间:2018-06-21 09:20:03

标签: excel vba dynamic

dynamic summation

  • 嗨,大家好,我需要我的宏,我有2组动态表,需要在最底部添加。但是问题在于那两组数据是动态的

  • 我创建了宏,其中这两组数据的总和在底部。

  • 我需要对2组数据进行4个单元的最终求和,这有可能吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我的意思是,没有什么可以阻止您使用=D(X) + D(Y),即使在动态范围内也可以完美运行...或者至少在您提供的示例中我会认为


尽管如果您绝对坚持在此使用VBA:

前两个步骤是可选的,但我建议您这样做,因为您说过两个表应位于底部,因此为了保持一致性,并且在添加新数据后不超出表范围,我建议这样做。还有我的其余代码假定,您确实将它们更改为表

  1. 将“表格”范围更改为实际表格(Insert->Table
  2. 单击表格,选择Design标签并编辑

    2.1。表格名称-简单易记
    2.2。添加总计行,而不是手动汇总额外行中的值

    enter image description here

    请紧记,您可能必须将向表中添加数据的方式更改为ListRow.Add(),以保持内容一致

  3. 将两个总计存储到变量中

      

    在假定条件下代码是正确的,您的表分别称为“ Table1”,“ Table2”,它们在工作表上称为“ Sheet1”,总计位于表的第二列。如果没有,请进行相应的更改。

  4. 将结果输出到某个地方,我将其打印在D16中,但请将其更改为所需的任何位置。

实际代码:

Private Sub sum_totals()
    Dim sum1 As Long
    Dim sum2 As Long
    Dim ws As Worksheet: Set ws = Sheets("Sheet1")

    sum1 = ws.ListObjects("Table1").TotalsRowRange(2)
    sum2 = ws.ListObjects("Table2").TotalsRowRange(2)

    ws.Range("D16").Value2 = sum1 + sum2

End Sub

按预期工作:

enter image description here

PS:如果您希望结果也是动态的(例如,最后一个列表行下有2行),则将D16更改为ws.Range(Cells(ws.ListObjects("Table2").TotalsRowRange.Row + 2, "D")).Value2 = sum1 + sum2