根据单元格内容的变化添加总和公式

时间:2018-03-30 22:12:36

标签: excel vba excel-vba

我有一组使用“主要任务”和“子任务”的数据。我想根据子任务ID值对主要任务进行小计。每次我添加行如果我不添加在该部分的中间,总和公式不会更新。是否有可以为我更新总和的代码?

以下是我的数据示例。假设我在第4行和第4行之间添加一行。 5,任务ID为“1.4”我希望B2中的总和公式更新。

enter image description here

也许我可以将“B”列设置为使用worksheetfuncion.left插入总和公式?

Sub test()
Dim rng As Range
Dim r As Range

Set rng = Range("A2:A15")

For Each r In rng
    If Left(r, 1) = Left(r.Offset(-1), 1) Then
        r.Offset(0, 5) = worksheetfunction.Sum( NEED HELP HERE
    End If
Next r

End Sub

编辑问题:

我想运行一个代码,只要ID父级发生更改,就会在B列中添加总和公式。即B2将=SUM(A3:A4)和B5 =SUM(A6:A8)

解决:

想通了,但这个问题暂时搁置了。

工作代码在这里:

Sub subTotals()
'
Dim rng As Range
Dim lngCounter As Long
Dim list As String

Set rng = Range("A2:A15")
'loops reverse order
For lngCounter = rng.Cells.Count To 1 Step -1
    'uses left function to compare ID with one above. if it's the same it will add to string list
    If Left(rng(lngCounter), 1) = Left(rng(lngCounter).Offset(-1), 1) Then
        list = list & "," & rng(lngCounter).Offset(, 1).Address
    'if first character of ID is different it will sum entier list of addresses
    Else
        rng(lngCounter).Offset(0, 1).Formula = "=Sum(" & list & ")"
        list = vbNullString
    End If
Next lngCounter

End Sub

1 个答案:

答案 0 :(得分:1)

在C2中尝试此公式并填写。

enter image description here