跳过一行,再次开始求和过程
我有一个程序生成的报告,在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方法。 在单元格C1
input此公式=IF(A1<>"",SUM(OFFSET(B1,0,0,MIN(IF(B1:B80="",ROW(B1:B80))))),"")
在空白行之前总结所有值。 将公式拖到您的值的底部。 由于它是一个数组公式,所以必须使用CTRL + SHIFT + ENTER来input它。 然后,可以过滤A
列中A
空白值以获得结果。