Удаление нескольких строк на основе критериев набора - PullRequest
0 голосов
/ 27 декабря 2018
Sub Macro()
Dim i As Long
For i = Cells(Rows.Count, 14).End(xlUp).Row To 2 Step -1
    If Cells(i, 14).Value2 = "APPLE" Then
        Rows(i).Delete
    End If
Next i

Dim f As Long
For f = Cells(Rows.Count, 14).End(xlUp).Row To 2 Step -1
    If Cells(f, 14).Value2 = "NAME" Then
        Rows(f).Delete
    End If
Next f
End Sub

У меня есть вышеупомянутый код для удаления всех строк, на которых есть яблоко и имя. Если возможно, я бы хотел, чтобы Excel выполнил код в одну или две строки.Ваша помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Быстрый способ удаления строк - использование автофильтра:

Sub FastDelete()
    Dim rng As Range, rngVisible As Range
    '//Remove filter if any
    ActiveSheet.AutoFilterMode = False
    '// Get range of only one column (N)
    Set rng = Range(Cells(1, 14), Cells(Rows.Count, 14).End(xlUp))
    '// Field:=1 because filter has only one field
    rng.AutoFilter Field:=1, Criteria1:=Array("APPLE", "NAME"), Operator:=xlFilterValues
    '// Have error handling in case if no data is found
    On Error Resume Next
    With rng
        '// Use Offset and Resize to exclude header
        Set rngVisible = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
    End With
    '// If rows were found (i.e. there's no error), delete them
    If Err = 0 Then rngVisible.EntireRow.Delete
    On Error GoTo 0
    '// Remove filter
    ActiveSheet.AutoFilterMode = False
End Sub
0 голосов
/ 27 декабря 2018
Dim i As Long
For i = Cells(Rows.Count, 14).End(xlUp).Row To 2 Step -1
    IF Cells(i, 14).Value2 = "APPLE" OR Cells(i, 14).Value2 = "NAME" THEN Rows(i).Delete
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...