首页 > 解决方案 > 如果列中没有值,如何删除行?

问题描述

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

我使用了一种代码,如果缺少一个单元格值,则删除行,但是如果单元格在某一列中不包含值,我想删除行。

例如,如果 Column G Row 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

这将删除具有任何类型的缺失单元格值的所有行。

标签: excelvba

解决方案


两个小改动:

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


推荐阅读