首页 > 解决方案 > 如何删除空白行?

问题描述

我从离开的同事那里继承了一个宏。

我有一个从源工作表创建的工作表,由 30000 行组成。包括主要数据在内,创建了超过一百万个空白行。

之间没有空白行。它是 30k+ 行数据,没有中断。

我做了一个单独的宏,在事后删除空白行。

我必须运行宏两次。
第一次,黑色边框(从第一张纸上继承)被删除,留下一百万行无边框。
我第二次运行它,留下最后使用的单元格。

Sub DeleteUnused()
    
    Dim myLastRow As Long
    Dim myLastCol As Long
    Dim wks As Worksheet
    Dim dummyRng As Range
    
    For Each wks In ActiveWorkbook.Worksheets
        With wks
            myLastRow = 0
            myLastCol = 0
            Set dummyRng = .UsedRange
            On Error Resume Next
            myLastRow = _
              .Cells.Find("*", after:=.Cells(1), _
              LookIn:=xlFormulas, lookat:=xlWhole, _
              searchdirection:=xlPrevious, _
              searchorder:=xlByRows).Row
            myLastCol = _
              .Cells.Find("*", after:=.Cells(1), _
              LookIn:=xlFormulas, lookat:=xlWhole, _
              searchdirection:=xlPrevious, _
              searchorder:=xlByColumns).Column
            On Error GoTo 0
    
            If myLastRow * myLastCol = 0 Then
                .Columns.Delete
            Else
                .Range(.Cells(myLastRow + 1, 1), _
                .Cells(.Rows.Count, 1)).EntireRow.Delete
                .Range(.Cells(1, myLastCol + 1), _
                .Cells(1, .Columns.Count)).EntireColumn.Delete
            End If
        End With
    Next wks
    
End Sub

标签: excelvba

解决方案


根据我的评论,这将删除空白行。只需将其作为创建空白行的宏的最后一行。

Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

推荐阅读