Для удаления строк, находящихся в списке, поместите список правее таблицы, из которой необходимо удалить входящие в список элементы и воспользуйтесь методом AdvancedFilter. Колонка с подлежащими удалению элементами должна иметь тот же заголовок, что и в фильтруемой таблице. Параметр функции — номер колонки со списком удаляемых элементов.
Sub ListRemove(ByVal Col As Integer)
Dim i As Integer
Range(Cells(1, Col + 1), Cells(1, Col + 2)).Value = "Есть" Cells(2, Col + 2).Value = True Names.Add Name:="Нет", RefersTo:=Range(Cells(2, Col), Cells(Cells(rows.Count, Col).End(xlUp).Row, Col)) i = Range(Cells(1, 1), Cells(1, Col - 2)).Find(what:=Cells(1, Col).Value, lookat:=xlWhole).Column Range(Cells(2, Col + 1), Cells(Cells(rows.Count, 1).End(xlUp).Row, Col + 1)).FormulaR1C1 = "=ISNA(MATCH(RC[" & i - Col - 1 & "],Нет,0))" ActiveSheet.UsedRange.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range(Cells(1, Col + 2), Cells(2, Col + 2)), CopyToRange:=Cells(1, Col + 4) Names("Нет").Delete For i = 1 To Col + 3 columns(1).Delete Next i For i = 1 To 3 columns(Col).Delete Next i