在A列连续且相等行的最后插入空行,并求和

Sub 第一步插入空行()    
    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    For i = lastRow To 3 Step -1
        If ws.Cells(i, 1).Value <> ws.Cells(i - 1, 1).Value Then
            ws.Rows(i).Insert
        End If
    Next i  
End Sub
Sub 第二步求和()
	Dim arr
    Set 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) Then
                arr(k) = ws.Range("L" & i).Value
            Else
                arr(k) = 0 ' 非数值按0处理
            End If
            i = i + 1
        Loop
        
        ' 如果收集到了数据,则计算总和并写入下一个空白单元格
        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 + 1
    Loop
    
    MsgBox "求和完成!", vbInformation
End Sub
posted @ 2025-10-06 18:55  python_learn  阅读(6)  评论(0)    收藏  举报