跳过一行,再次开始求和过程

我有一个程序生成的报告,在Excel中打开类似于下面的图像

电子表格

我一直在使用这个代码来总结金额:

Sub SumTotals() lastrow = Sheets("sheet1").Cells(Rows.Count, 2).End(xlUp).Row Range("b" & lastrow + 1) = WorksheetFunction.Sum(Sheets("sheet1").Range("b2:b" & lastrow)) Range("a" & lastrow + 1) = Cells(1, 1) Range("a1:b" & lastrow).Select Selection.Delete Shift:=xlUp End Sub 

我遇到的问题是,代码总结了公司A和公司B,并最终结束

A公司5,625.07

我正在努力完成的是

A公司2,053.73

B公司3,571.34

当我得到这些报告时,通常有100多家公司,所以如果我可以加快这一进程,这将是非常有益的。

我怀疑第一行代码是问题所在

 lastrow = Sheets("sheet1").Cells(Rows.Count, 2).End(xlUp).Row 

因为这是放置在单元格B8而不是B3 。 我想弄清楚如何总结第一列数字,直到第一个空行,然后继续下面的数字并执行相同的过程。 任何build议表示赞赏。

理想的最终结果理想的结果

尝试这个

 Sub x() Dim r As Range For Each r In Columns(2).SpecialCells(xlCellTypeConstants).Areas r(r.Count + 1).Value = Application.Sum(r) r(r.Count + 1).Offset(, -1).Value = r(1).Offset(, -1).Value r.EntireRow.Delete shift:=xlUp Next r End Sub 

你也可以试试这个非VBA方法。 在单元格C1input此公式=IF(A1<>"",SUM(OFFSET(B1,0,0,MIN(IF(B1:B80="",ROW(B1:B80))))),"")在空白行之前总结所有值。 将公式拖到您的值的底部。 由于它是一个数组公式,所以必须使用CTRL + SHIFT + ENTER来input它。 然后,可以过滤A列中A空白值以获得结果。

在这里输入图像说明