Sub 第一步插入空行() Set ws = ActiveSheetlastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).RowFor i = lastRow To 3 Step -1If ws.Cells(i, 1).Value <> ws.Cells(i - 1, 1).Value Thenws.Rows(i).InsertEnd IfNext i
End Sub
Sub 第二步求和()Dim arrSet ws = ActiveSheet' 获取L列最后一个非空行的行号最后行 = ws.Cells(ws.Rows.Count, "L").End(xlUp).Row' 从第2行开始处理i = 2' 当行号小于等于最后一行时循环Do While i <= 最后行' 初始化数组和计数器ReDim arr(1 To 1)' 收集连续非空单元格的值Do While ws.Range("L" & i).Value <> "" And i <= 最后行k = k + 1' 调整数组大小以容纳新元素ReDim Preserve arr(1 To k)' 将当前单元格值存入数组(只处理数值)If IsNumeric(ws.Range("L" & i).Value) Thenarr(k) = ws.Range("L" & i).ValueElsearr(k) = 0 ' 非数值按0处理End Ifi = i + 1Loop' 如果收集到了数据,则计算总和并写入下一个空白单元格If k > 0 Then' 计算数组中所有元素的总和For j = LBound(arr) To UBound(arr)总和 = 总和 + arr(j)Next j' 将结果写入当前空白单元格(L列i行)ws.Range("L" & i).Value = 总和总和= 0 '对变量“总和”清零End If' 移动到下一行继续处理i = i + 1LoopMsgBox "求和完成!", vbInformation
End Sub