删除空白单元格

时间:2018-09-15 09:44:42

标签: excel-vba

在A列中,我们分别有1到10的数字 在B列中,我们持有字母a至j,但没有顺序 我们删除了4个字母 我不想更改A列,但B列删除了她下面的空白单元格和字母 以下代码删除具有空单元格的行:

enter image description here

Sub DeleteEmptyRows()

'   Deletes the entire row within the selection if the ENTIRE row contains no data.

Dim i As Long
ActiveSheet.UsedRange.Select

With Application
    ' Turn off calculation and screenupdating to speed up the macro.
    .Calculation = xlCalculationManual
    .ScreenUpdating = False

    For i = Selection.Rows.Count To 2 Step -1
        If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then Selection.Rows(i).EntireRow.Delete
    Next i

    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With

End Sub

2 个答案:

答案 0 :(得分:1)

我不明白您如何从第一张图片转到第二张图片,但是如果您从第二张图片开始,则会将您转到第三张图片。

Sub x()

On Error Resume Next 'avoid error if no blank cells
Columns("B").SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp
On Error GoTo 0

End Sub

答案 1 :(得分:1)

此解决方案将循环遍历rangeAreas,复制该区域的B列中的内容,删除空白,然后将结果返回b列,我需要Z列作为辅助列

Sub Button1_Click()
    Dim RangeArea As Range, x

    For Each RangeArea In Columns("A").SpecialCells(xlCellTypeConstants, 1).Areas
        x = RangeArea.Rows.Count
        RangeArea.Offset(, 1).Copy [z1]
        Columns("Z:Z").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
        RangeArea.Offset(, 1).Value = Range("Z1:Z" & x).Value
        Range("Z:Z").Delete

    Next RangeArea

End Sub