OK вполне может быть лучшим способом сделать это, но я пошел с созданием временного листа, копия в строках, которые соответствуют поисковому запросу, удалите все строки в листе и, наконец, скопировать обратно строки, -ие затем удалите временный лист:
Sub DeleteRows()
Dim c As Range, b As Range, SrchRng As Range, SrchStr As String, MasterSheet As Worksheet, TempSheet As Worksheet
Set MasterSheet = ActiveSheet
Set SrchRng = ActiveSheet.Range("A1", ActiveSheet.Range("A4343").End(xlUp))
SrchStr = InputBox("Please Enter Value")
Worksheets.Add
Set TempSheet = ActiveSheet
MasterSheet.Select
Set c = SrchRng.Find(SrchStr, LookIn:=xlValues)
Set b = c
Do
If Not c Is Nothing Then
c.EntireRow.Copy
TempSheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll
End If
Set c = SrchRng.FindNext(After:=c)
If c.Address = b.Address Then Exit Do
Loop While Not c Is Nothing
Range("A2:A" & Rows.Count).EntireRow.ClearContents
TempSheet.Range("A2:A" & TempSheet.Range("A" & Rows.Count).End(xlUp).Row).EntireRow.Copy
ActiveSheet.Range("A2:A" & TempSheet.Range("A" & Rows.Count).End(xlUp).Row).PasteSpecial xlPasteAll
Application.DisplayAlerts = False
TempSheet.Delete
Application.DisplayAlerts = True
End Sub
Надежда, что помогает.
Я начал играть, пытаясь заполнить массив из результатов поиска одним движением, не зацикливая его, но это не пошло хорошо, и у меня закончилось свободное время, чтобы исследовать это, к сожалению. Моя идея состояла в том, чтобы попытаться заполнить массив из результатов за один раз, затем выбрать все строки минус что угодно в объединенном массиве, а затем удалить. Не уверен, насколько это возможно, но, возможно, изучить его, если вы получите время.
В моих тестовых данных использовалась колонка A, вам нужно будет изменить несколько частей для колонки B.