如何用vba删除空单元格或空行或空列?

在用vba编写解决方案时,会经常遇到需要将空行或者空列删除的情况。

如下图所示的单元格区域中存在空行和空列

要将上图中的空行或空列删除,如果按照顺序遍历删除(从上到下,从左到右),由于删除的行列会导致后面的行列位置序号发生改变,会导致代码出错。

这里介绍逆序删除法,即从下到上遍历或从右到左遍历,遇到空行或空列删除后不会影响其它未删除的行列的序号。

代码如下:

Sub QQ1722187970()
    Dim oWK As Worksheet
    Set oWK = Sheet1
    With oWK
        iRow = .Range("a65536").End(xlUp).Row
        iCol = .Cells(1, 256).End(xlToLeft).Column
        '逆序删除行
        For i = iRow To 1 Step -1
            If Excel.Application.WorksheetFunction.CountA(.Range("a" & i).EntireRow) = 0 Then
                .Range("a" & i).EntireRow.Delete
            End If
        Next i
         '逆序删除列
        For i = iCol To 1 Step -1
            If Excel.Application.WorksheetFunction.CountA(.Cells(1, i).EntireColumn) = 0 Then
               .Cells(1, i).EntireColumn.Delete
            End If
        Next i
    End With
End Sub
       

发表评论