Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VBA中对变量范围内的值求和?_Vba_Excel - Fatal编程技术网

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

如何在VBA中对变量范围内的值求和?,vba,excel,Vba,Excel,我有一张如下所示的表格 在C列中,如果A列的值具有相同的索引(B列),我想对A列的值求和。如果所有行都有相同的索引(如第D列所示),我想为它们设置总和结果 不幸的是,具有相同索引的值的范围是可变的,并且我的宏只能使用两个索引求和值。有人能帮忙吗?谢谢 Sub example() Dim ws As Worksheet Dim LastRow As Long Dim n, i As Integer Set ws = ActiveWorkbook.Sheets("Sheet2") ws.Selec

我有一张如下所示的表格

在C列中,如果A列的值具有相同的索引(B列),我想对A列的值求和。如果所有行都有相同的索引(如第D列所示),我想为它们设置总和结果

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

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

这里有一个方法:

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

为什么不使用SUMIF电子表格函数呢?您的意思是:“=SUMIFS(A:A;B:B;B3)”?我想在宏中集成它,因为它只是较长代码的一部分谢谢!如果我需要添加一些其他条件(以获得kind=SUMIFS),如何将其集成到这段代码中?它将使用SUMIFS,然后为每个范围/条件对使用类似的范围语法。