前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ExcelVBA在选择区域(有合并)中删除清除空行

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

作者头像
哆哆Excel
发布2024-05-20 15:30:07
730
发布2024-05-20 15:30:07
举报
文章被收录于专栏:哆哆Excel哆哆Excel

【问题】

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

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

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

函数可能不好做哦!

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

也可考虑整合到VSTO中。

【代码】

共享如下(含测试代码)

代码语言:javascript
复制
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

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

【运行】

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

【成功】

如图

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档