如果列中没有值,如何删除行?

时间:2019-10-30 20:12:41

标签: excel vba

如果某列中没有值,我正在尝试删除表中的行。

我使用的代码会在缺少一个单元格值的情况下删除行,但是如果某个单元格的某一列中不包含值,我想删除行。

例如,如果G列第5行中没有值,那么我要删除整行。

Sub Test2()

  Dim rng As Range
  On Error Resume Next
  Set rng = Range("Table3").SpecialCells(xlCellTypeBlanks)
  On Error GoTo 0
  If Not rng Is Nothing Then
    rng.Delete Shift:=xlUp
  End If

End Sub

这将删除所有类型的缺少单元格值的所有行。

1 个答案:

答案 0 :(得分:1)

两个小变化:

Sub Test2()

    Dim rng As Range
    On Error Resume Next
    Set rng = Range("G:G").SpecialCells(xlCellTypeBlanks)
    On Error GoTo 0

    If Not rng Is Nothing Then
        rng.EntireRow.Delete Shift:=xlShiftUp
    End If

End Sub

编辑:

如果您想直接使用表,请考虑遍历有问题的表的ListRows,如下所示:

Sub Test2()
    Dim myTbl As ListObject
    Set myTbl = Sheet1.ListObjects("table3") ' change sheet as necessary

    Dim indx As Long
    indx = myTbl.ListColumns("ColumnName").Index

    Dim rngToDelete As Range

    Dim myRw As ListRow
    For Each myRw In myTbl.ListRows
        If IsEmpty(myRw.Range(1, indx).Value) Then
            If rngToDelete Is Nothing Then
                Set rngToDelete = myRw.Range
            Else
                Set rngToDelete = Union(rngToDelete, myRw.Range)
            End If
        End If
    Next myRw

    If Not rngToDelete Is Nothing Then
        rngToDelete.Delete Shift:=xlShiftUp
    End If
End Sub

注意:从技术上讲,它是xlShiftUp,而不是xlUp