循环遍历所有单元格并删除任何零单元格(向上移动)

时间:2013-09-06 00:56:50

标签: vb.net excel visual-studio-2010 excel-vba loops vba

这似乎应该是一个相当简单的任务,但我似乎无法让它工作 - 我只想要一个简单的宏来循环我的工作表中的所有单元格。如果单元格等于零(或踢空白),则只需删除它,将列中的其他单元格向上移动一个。

我无法在整个文档中尝试这样做,所以我尝试在一个列上进行:

Sub Macro6()
'
' Macro6 Macro
'
' Keyboard Shortcut: Ctrl+q
'
For i = 81 To 1 Step -1
If Range("A" & i) = "0" Then Range("A" & i).Delete
Next i
End Sub

我不想删除任何行,只要它们具有值0的单个单元格。

但显然仍然无处可去。

2 个答案:

答案 0 :(得分:3)

选择要删除空白的范围。主页>编辑 - 查找&选择,转到特殊,空白,确定,在阵列中选择,删除...,向上移动单元格,确定。

将相同的流程应用于包含0选择范围的单元格,以删除0内部并开始(即在上面之前),将其替换为无:

主页>编辑,查找&选择,在查找内容中输入0,选中匹配整个单元格内容并确保替换为:为空,全部替换。

答案 1 :(得分:1)

这个小宏将删除空白和零:

Sub dural()
    Dim rKill As Range, r As Range
    Set rKill = Nothing
    For Each r In ActiveSheet.UsedRange
        If r.Value = 0 Or r.Value = "" Then
            If rKill Is Nothing Then
                Set rKill = r
            Else
                Set rKill = Union(rKill, r)
            End If
        End If
    Next

    If rKill Is Nothing Then
    Else
        rKill.Delete Shift:=xlUp
    End If
End Sub

正如 pnuts 所指出的,这可能有点慢。以下可能会更快一些:

Sub dural2()
    With Cells
        .Replace "0", ""
        .SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
    End With
End Sub