VBA:删除

时间:2018-03-01 08:51:49

标签: vba excel-vba sorting cells excel

我想删除范围内的空白单元格(E1:E130)。 我尝试使用if value = "",然后可以在下面的代码中看到:

For Each cell In ranger
    If cell.Value = "" Then
        cell.Delete
    End If
next cell  

但是,此代码似乎跳过某些单元格而不删除所有需要的单元格。 为了使我的目标更加明确:我目前有一个包含文本和空单元格的单元格列表,范围为E1:E130,我想在E1上创建一个没有任何空单元格的列表。 例如,在字母表上排序也是一个很好的解决方案,但是对我来说也没有任何效果:S confused

提前致谢, 布尔

6 个答案:

答案 0 :(得分:3)

我会像以下那样

With Range("E1:E130")
    If WorksheetFunction.CountA(.Cells) > 0 Then .SpecialCells(xlCellTypeBlanks).Delete Shift:=xlShiftUp
End With

答案 1 :(得分:1)

您可以使用Range.SpecialCells Method一次删除特定范围内的所有空白单元格:

Range("E1:E130").SpecialCells(xlCellTypeBlanks).Delete

答案 2 :(得分:1)

您可以尝试使用此代码删除定义范围上的空白单元格:

Sub RemoveBlankCells()

Dim rng As Range

'Store blank cells inside a variable
  On Error GoTo NoBlanksFound
    Set rng = Range("E1:E130").SpecialCells(xlCellTypeBlanks)
  On Error GoTo 0

'Delete blank cells and shift upward
  rng.Rows.Delete Shift:=xlShiftUp

Exit Sub

'ERROR HANLDER
NoBlanksFound:
  MsgBox "No Blank cells were found"

End Sub

答案 3 :(得分:0)

这应该有效:

Columns("E:E").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp

答案 4 :(得分:0)

这里略过一个老问题,但是: OP,我不确定您的问题(“针对范围内的每个单元格”未删除所有所需的单元格)是由以下原因引起的,但是在我了解Range(...)之前,我写了“ for循环” ”。

首先,我从上到下运行循环,并删除了不需要的单元格。但是,当您删除一个单元格时,整个列将向上移动,而您的计数器保持相同的值,因此,如果有2个空白,则在删除第一个空白时第二个将向上移动,然后循环跳过空白。 / p>

然后,我从头到尾运行循环(步骤-1),这解决了这个问题。

答案 5 :(得分:0)

这是一种特殊的方法,如果要擦除与空白单元格关联的所有数据,此功能将更为有用。

 Range("A:B").SpecialCells(xlCellTypeBlanks).Select
            Selection.EntireRow.Delete