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

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

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

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

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

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
0
832
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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" & r).value = "No match" then Range(r & ":" & r).EntireRow.Delete
    next r
end sub

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

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

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

Patricia Beate Lulle 14.12.2020 16:04
Ответ принят как подходящий

Если вы действительно хотите автоматически удалять строки всякий раз, когда значение ячейки в столбце 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" & 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

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

Patricia Beate Lulle 15.12.2020 10:26

Другие вопросы по теме