【问题标题】:How to Delete COMPLETELY Blank Rows VBA [duplicate]如何完全删除空白行 VBA [重复]
【发布时间】:2018-07-20 20:34:33
【问题描述】:

在我的宏中,我想删除完全空白的行。不是在一列中有内容的行,因为那仍然是有价值的信息。

我已经查看了整个互联网,但如果有人能想出一个函数来删除整个空白行,而不仅仅是删除几列中缺少某些内容的行,那就太棒了。

(信息仅在 A 到 N 列和大约 7000 行)。我还没有为此开发任何代码,因为我真的很难过。

【问题讨论】:

  • 数据在哪里?它是文件、数据库中的表、Excel 工作表吗?
  • 您的代码目前是什么样的?你试过什么?
  • 最后一百万左右完全空白行呢?另外,定义“空白”——格式是否算数?可能填充多少列?

标签: excel vba rows delete-row


【解决方案1】:

你可以用这个...

Sub ClearEmptyRows()
  Dim r As Long, lastrow As Long, WS As Worksheet, killRng As Range

Set WS = ActiveSheet

lastrow = WS.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row

Set killRng = WS.Rows(Rows.Count)

For r = 1 To lastrow
    If Application.WorksheetFunction.CountA(WS.Rows(r)) = 0 Then
        Set killRng = Union(killRng, WS.Rows(r))
    End If

Next r

killRng.Delete

End Sub

此代码中的几个 cmet 适合新手,因为它是循环遍历行并执行某事(删除、突出显示、隐藏等)的常见例程

  • 最好尽可能少地与 Worksheet 交互。因此,我们在识别出所有行之后执行Delete
  • 您不能将Union 设为空范围,因此我将killRng 最初设置为整个最后一行(希望这始终为空白),然后宏可以继续使用Union。可以通过包含 if 语句来解决此问题,但这需要宏检查每一行是否存在范围。

【讨论】:

    【解决方案2】:

    如果您只想删除空行并且不关心格式化,这非常快。

    Sub RemoveEmptyRows()
        Dim results As Variant, Target As Range
        Dim c As Long, r As Long, n As Long
        Set Target = Worksheets("Sheet1").UsedRange
    
        If Target.Count > 0 Then
            ReDim results(1 To Target.Rows.Count, 1 To Target.Columns.Count)
            For r = 1 To Target.Rows.Count
                If WorksheetFunction.CountA(Target.Rows(r)) > 0 Then
                    For c = 1 To Target.Columns.Count
                        n = n + 1
                        results(n, c) = Target.Cells(r, c).Value
                    Next
                End If
            Next
        End If
        Application.Calculation = xlCalculationManual
        Application.ScreenUpdating = False
        Target.Value = results
        Application.ScreenUpdating = xlCalculationAutomatic
        Application.ScreenUpdating = False
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2011-03-21
      • 2020-11-29
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多