Как удалить строку, если в столбце нет значения? - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь удалить строки в таблице, если в определенном столбце нет значения.

Я использовал код, который удаляет строки, если отсутствует одно значение ячейки, но я хотел быудалить строки, если ячейка не содержит значения в определенном столбце.

Например, если в столбце 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 Ответ

1 голос
/ 30 октября 2019

Два небольших изменения:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...