删除空单元格(非常慢)

时间:2014-03-11 11:46:17

标签: excel-vba vba excel

我有一个范围,我想要删除所有空单元格。我开发了以下解决方案,但速度非常慢。任何人都可以帮助我理解为什么这样解决,以及什么方法会导致更快的解决方案。

Application.ScreenUpdating = False
    For i = letzte2 To 4 Step -1
        For j = 2 To 17
            If tab6.Cells(i, j) = "" Then
            tab6.Cells(i, j).Delete shift:=xlUp
            End If
        Next j
    Next i
Application.ScreenUpdating = True

2 个答案:

答案 0 :(得分:1)

只执行一次删除

Dim rDel As Range
Set rDel = Nothing
Application.ScreenUpdating = False
    For i = Letzte2 To 4 Step -1
        For j = 2 To 17
            If tab6.Cells(i, j) = "" Then
                If rDel Is Nothing Then
                    Set rDel = tab6.Cells(i, j)
                Else
                    Set rDel = Union(rDel, tab6.Cells(i, j))
                End If
            End If
        Next j
    Next i
If Not rDel Is Nothing Then
    rDel.Delete shift:=xlUp
End If
Application.ScreenUpdating = True

答案 1 :(得分:0)

使用SpecialCells()方法可以非常简单(有效)地完成此操作。以下内容删除选择中的所有空单元格。

Sub DeleteEmptyCells()
    Dim Rng As Range

    Set Rng = Selection.SpecialCells(xlCellTypeBlanks)

    If Not Rng Is Nothing Then
        Rng.Delete shift:=xlUp
    End If
End Sub