Как автоматически удалять строки, которые не соответствуют определенному значению в Excel?

#excel #vba #excel-formula

#excel #vba #excel-формула

Вопрос:

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

Моя текущая формула для определения строк, которые не совпадают =IF(K3<>L3,"No match","")

Это хранится в столбце «M» моего рабочего листа под названием «Отчет один».

Как мне заставить Excel автоматически удалять строки, где значение = «Нет совпадения» в столбце M.

Ответ №1:

Если вы действительно хотите автоматически удалять строки всякий раз, когда значение ячейки в столбце M изменяется на «Не соответствует«, тогда вам понадобится Private Sub Worksheet_Calculate() решение. Следующий код должен дать вам то, что вы хотите. Предполагается, что ваши данные начинаются со строки 2.

 Option Explicit
Private Sub Worksheet_Calculate()
On Error GoTo GetOut
Application.EnableEvents = False

Dim LastRow As Long, c As Range
LastRow = Cells(Rows.Count, 13).End(xlUp).Row

For Each c In Sheets("Report One").Range("M2:M" amp; LastRow)    
    If c.Value = "No match" Then
        c.EntireRow.Delete
    End If
Next c

Continue:
    Application.EnableEvents = True
    Exit Sub
GetOut:
    MsgBox Err.Description
    Resume Continue

End Sub
 

Комментарии:

1. Это прекрасный фрагмент кода, спасибо, он сработал.

Ответ №2:

Пройдите по строкам и посмотрите, является ли значение «Не соответствует» с помощью VBA.

 Sub DeleteNoMatch()
    LR = ActiveSheet.Cells(ActiveSheet.Rows.Count, "M").End(xlUp).Row ' last row  

    for r = LR to 1 step -1 ' adjust the 1 to what row to start at. (header on the table?)
        if range("M" amp; r).value = "No match" then Range(r amp; ":" amp; r).EntireRow.Delete
    next r
end sub
 

Возможно, вы захотите изменить столбец «M» в строке LR на что-то другое.
Если у вас есть таблица со 100 строками данных, но столбец M простирается до строки 1000, тогда 900 строк (как минимум) будут удалены.

Либо вы меняете свою формулу так, чтобы она не давала совпадений, когда она пуста, либо меняете, в каком столбце определять значение столбца «count».

Комментарии:

1. Спасибо за это. Я скорректировал 1 на 2, так как начинаю со второй строки. Однако код не компилируется, я получаю «Недопустимую внешнюю процедуру». Пытался добавить Sub в начале и Sub End в конце, но, похоже, не работает. Чего мне не хватает?