如何在VBA中对可变范围内的值求和?

时间:2015-03-11 15:09:29

标签: excel vba excel-vba

我有一张桌子如下图所示。

在C列中,如果它们具有相同的索引(列B),我想从列A中求和。如果它们具有相同的索引,我想为所有行添加sum结果(如D列所示)。

不幸的是,具有相同索引的值的范围是可变的,并且我的宏可以仅使用2个索引对值求和。有人可以帮帮忙吗?谢谢!

enter image description here

Sub example()
Dim ws As Worksheet
Dim LastRow As Long
Dim n, i As Integer
Set ws = ActiveWorkbook.Sheets("Sheet2")

ws.Select

LastRow = Sheets("Sheet2").Range("A" & Sheets("Sheet2").Rows.Count).End(xlUp).Row

Range("C3:C" & LastRow).Select
Selection.ClearContents

For i = 3 To LastRow
If Range("B" & i + 1) - Range("B" & i) = 0 Then
Range("C" & i) = Range("A" & i + 1) + Range("A" & i)
Else
Range("C" & i) = Range("C" & i - 1)
End If
Next i


End Sub

1 个答案:

答案 0 :(得分:4)

以这种方式:

Sub example()
    Dim ws                    As Worksheet
    Dim LastRow               As Long

    Set ws = ActiveWorkbook.Sheets("Sheet2")

    LastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row

    With ws.Range("C3:C" & LastRow)
        .ClearContents
        .Value = ws.Evaluate("INDEX(SUMIF(B3:B" & LastRow & ",B3:B" & LastRow & ",A3:A" & LastRow & "),)")
    End With
End Sub