ExcelVBA在选择区域(有合并)中删除清除空行

【问题】

关于删除空行,以前是用函数来完成工作的,

今天有人提出问题,传来这个文件,

现有数据,1w多行,其中有部分列有不同合并单元格,跨行也不一样。如果要进行筛选删除空行,有一定的时间与难度。

函数可能不好做哦!

还是用VBA做一个吧,以后相同的工作也可复用,方便,

也可考虑整合到VSTO中。

0606cce4c54d02ad20ea89beab34a851.png

【代码】

共享如下(含测试代码)

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

代码中先用涂色,测试,如果要删除修改一下就可以啦

【运行】

我们可以先选择区域,再运行代码,

【成功】

如图

a2350f8572dfcb7560d0fcde7457a1aa.png

如果对你有帮助,转发给大家免费学习

b17b78dc9dd65dbaafd054478186e91c.jpeg

关注,有更多文章学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值