
【问题】
关于删除空行,以前是用函数来完成工作的,
今天有人提出问题,传来这个文件,
现有数据,1w多行,其中有部分列有不同合并单元格,跨行也不一样。如果要进行筛选删除空行,有一定的时间与难度。
函数可能不好做哦!
还是用VBA做一个吧,以后相同的工作也可复用,方便,
也可考虑整合到VSTO中。

【代码】
共享如下(含测试代码)
Sub yhd选择区域删除空行()
    Dim SelRng As Range
    Set SelRng = Selection
    si = SelRng.row
    ei = SelRng.rows.Count
    Debug.Print si, ei
    For i = si To si + ei
        a = Excel.Application.WorksheetFunction.CountA(SelRng.rows(i))
        Debug.Print "i=" & i & "a=" & a
    Next
    With Worksheets("选择区域删除空行")
        Set SelRng = .Range("A1:L878")
        si = SelRng.row
        ei = SelRng.rows.Count
        '        Debug.Print si, ei
    End With
End Sub
Sub DeleteEmptyRowsInSelection()
    Dim rng As Range
    Dim r As Long
    ' 检查选择区域是否为空
    If Selection Is Nothing Then
        MsgBox "没有选择区域", vbExclamation, "提示"
        Exit Sub
    End If
    ' 获取选择区域的所有行号
    Dim rows As Variant
    rows = Selection.rows
    ' 从最后一行开始向上遍历,避免索引问题
    For r = UBound(rows) To LBound(rows) Step -1
        ' 检查整行是否有数据
        If WorksheetFunction.CountA(Selection.rows(r)) = 0 Then
            ' 如果没有数据,删除该行
            '            Selection.rows(r).Delete
            Debug.Print r
            Selection.rows(r).Interior.ColorIndex = 20
        End If
    Next r
End Sub代码中先用涂色,测试,如果要删除修改一下就可以啦
【运行】
我们可以先选择区域,再运行代码,
【成功】
如图
