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