Excel 删除范围中的空白单元格

Excel 删除范围中的空白单元格,excel,vba,cell,Excel,Vba,Cell,我想删除范围(E1:E130)中的空白单元格 此代码跳过单元格 For Each cell In ranger If cell.Value = "" Then cell.Delete End If next cell 为了使我的目标更加明确:我有一个单元格列表,其中包含文本和E1:E130范围内的空单元格,我想创建一个从E1开始的列表,不包含任何空单元格。 例如,按字母表排序也是一个很好的解决方案,但这对我也不起作用。您可以使用一次删除特定范围内的所有空白单元格

我想删除范围(E1:E130)中的空白单元格

此代码跳过单元格

For Each cell In ranger
    If cell.Value = "" Then
        cell.Delete
    End If
next cell
为了使我的目标更加明确:我有一个单元格列表,其中包含文本和E1:E130范围内的空单元格,我想创建一个从E1开始的列表,不包含任何空单元格。
例如,按字母表排序也是一个很好的解决方案,但这对我也不起作用。

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

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

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

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
我会像下面那样去

With Range("E1:E130")
    If WorksheetFunction.CountA(.Cells) > 0 Then .SpecialCells(xlCellTypeBlanks).Delete Shift:=xlShiftUp
End With
这应该起作用:

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

巫术是一个老问题,但是: 哦,我不确定你的问题(关于“范围内的每个单元格”不删除所有想要的单元格)是否源于以下内容,但在我了解范围(…)之前。除去重复,我为该任务编写了“for循环”

首先,我从上到下运行循环,并移除不需要的单元格。但是当你移除一个单元格时,整个列都会向上移动,而你的计数器停留在同一个值上,所以如果有2个空白,则第二个在移除第一个时被移动,然后循环跳过空白。

所以,我运行了循环底部到顶部(步骤1),并解决了这个问题。

< P>这个方法使用特殊的方法,如果你想删除所有与空白单元格相关的数据,则更有用。

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

使用
。选择
是一种不好的做法。请阅读以了解更多信息。谢谢您的指正。。这篇文章真的很有帮助,你想让我为此写一段代码吗?我手头上没有一个或任何东西,而且由于我一直在使用.RemoveDuplicates,我有点忘记了我是如何做到这一点的。一些代码将帮助经验比你少的其他人理解和使用你的答案。