VBA Excel如何删除过滤器空行(但不是整行)并向上移动单元格

时间:2018-04-20 14:30:12

标签: excel vba excel-vba

我想在一个非常大的电子表格中只删除空白单元格(不是整行),并且想要移动下面的单元格。

您可以从电子表格快照中获得一个想法。

有人可以帮忙吗?我正在处理非常大的电子表格。

enter image description here

谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用SpecialCells,例如

Sub x()
On Error Resume Next
Range("C:D").SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp
'or
Range("A1").CurrentRegion.offset(,2).resize(,2).SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp
On Error GoTo 0
End Sub

On Error是为了避免在没有空格的情况下出错。

答案 1 :(得分:0)

这是一种方法。这将删除工作表上每列的空白单元格

Option Explicit
Public Sub RemoveBlanks()
    Dim rng As Range
    Dim c

    Set rng = Application.InputBox("Select a range", "Get Range", Type:=8)
    If Not rng Is Nothing Then
        On Error Resume Next
        With rng.Parent
            For Each c In rng
                Range(c, c.Offset(.Cells(.Rows.Count, c.Column).End(xlUp).Row - c.Row, 0)).SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp
            Next c
        End With
        On Error GoTo 0
    Else
        MsgBox "Nothing selected"
    End If
End Sub