Как удалить строки с выделенным текстом? - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть sheet1 с каждой другой ячейкой в ​​столбце "B", имеет следующие буквы, "LLC".Мой скрипт vba должен очистить все "LLC" и удалить всю строку по горизонтали.

Код, который я уже использовал:

Sub deleteRowswithSelectedText()
For Each CELL In Selection
   If CELL.Value(i, 2) = "LLC" Then
      Rows(CELL.Row).ClearContents
   End If
Next
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
End Sub

1 Ответ

0 голосов
/ 19 апреля 2019

Попробуйте это, если вы хотите пройтись по каждой ячейке и проверить это, вы можете, но вам нужно будет выполнить цикл снизу вверх.Другой способ - использовать фильтр и удалить все видимые строки одновременно.

Dim lr As Long
Dim i As Long

lr = Cells(Rows.Count, 1).End(xlUp).Row

    For i = lr - 1 To 2 Step -1
        If Cells(i, "B") = "LLC" Then
            Cells(i, "B").EntireRow.Delete
        End If
    Next i

Другим способом является использование фильтра и удаление каждой строки, для которой в столбце B указано «LLC».

With ActiveSheet
    .AutoFilterMode = False
        With Range("A1").CurrentRegion
            .AutoFilter Field:=2, Criteria1:="LLC"
            On Error Resume Next
            .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        End With
    .AutoFilterMode = False
End With

Это только примеры, есть много способов выполнить эту задачу..

Код ниже, вероятно, ближе к тому, что вы пытались сделать.

With Sheets("Sheet1") 'Change to your worksheet name
    For Each CELL In .Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row)
        If CELL.Value = "LLC" Then
            CELL.EntireRow.Delete
        End If
    Next CELL
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...