使用VBA基于多个条件组合和汇总行

时间:2015-05-05 22:22:05

标签: excel-vba sum rows vba excel

我是VBA新手,无法弄清楚如何根据某些列标准对行进行组合和求和。比如说,B列和C列有文本值,而A列有数字值。第1行和第2行在列B和C中具有相同的值。我希望将这些行组合成一行,其中列B和C具有与之前相同的值,但是列A具有前一行的总和。

1 个答案:

答案 0 :(得分:0)

假设第1行包含列的标题,并且其余行只包含值,则以下代码应该执行该操作(对于sheet1):

Public Sub SumByTwoCriteria()
Dim lngStartRow, lngSearchRow, lngLastRow As Long

lngLastRow = Sheet1.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

For lngStartRow = 2 To lngLastRow
    For lngSearchRow = lngStartRow + 1 To lngLastRow
        While Sheet1.Cells(lngStartRow, 2).Value2 = Sheet1.Cells(lngSearchRow, 2).Value2 And _
            Sheet1.Cells(lngStartRow, 3).Value2 = Sheet1.Cells(lngStartRow, 3).Value2
                Sheet1.Cells(lngStartRow, 1).Value2 = Sheet1.Cells(lngStartRow, 1).Value2 + Sheet1.Cells(lngSearchRow, 1).Value2
                Sheet1.Rows(lngSearchRow & ":" & lngSearchRow).Delete
                lngLastRow = lngLastRow - 1
        Wend
    Next lngSearchRow
Next lngStartRow

End Sub