Как автофильтр или аналогичный, чтобы включить только определенные слова

Насколько я понимаю, я могу использовать такой автоматический фильтр для удаления определенных строк, содержащих определенные строки, как показано ниже (в этом примере удаленная строка содержит строку «111-11111»).

Set ws = Sheets("Gate_Results")
Set rng1 = ws.Range(ws.[u1], ws.Cells(Rows.Count, "U").End(xlUp))
With ActiveSheet
    .AutoFilterMode = False
    rng1.AutoFilter Field:=1, Criteria1:="111-11111"
    rng1.Offset(1, 0).EntireRow.Delete
    .AutoFilterMode = False
End With

Однако мне было интересно, есть ли способ удалить строки, которые НЕ содержат критерии. Примером этого может быть, если строка ###-##### представляет коды продуктов, если я хочу отфильтровать свой список, чтобы увидеть только 3 разных продукта из библиотеки кодов, могу ли я использовать для этого функцию автофильтра , и если да то как?

Я уже пробовал следующий (и аналогичный пример, но &-ing в дополнительных строках в разделе критерии1), однако это вообще не сработало, но это были просто мои дилетантские догадки.

Set ws = Sheets("Gate_Results")
Set rng1 = ws.Range(ws.[u1], ws.Cells(Rows.Count, "U").End(xlUp))
With ActiveSheet
    .AutoFilterMode = False
    rng1.AutoFilter Field:=1, Criteria1:<>"111-11111"
    rng1.Offset(1, 0).EntireRow.Delete
    .AutoFilterMode = False
End With

Я был бы признателен за любую помощь в поиске рабочего метода, даже если он не включает автофильтр. Но эффективность будет оценена дополнительно. :D


person Lewis Heslop    schedule 30.07.2014    source источник


Ответы (1)


Вам нужно поставить <> между кавычками. Так:

Set ws = Sheets("Gate_Results")
Set rng1 = ws.Range(ws.[u1], ws.Cells(Rows.Count, "U").End(xlUp))
With ActiveSheet
    .AutoFilterMode = False
    rng1.AutoFilter Field:=1, Criteria1:"<>111-11111"
    rng1.Offset(1, 0).EntireRow.Delete
    .AutoFilterMode = False
End With
person Nat Aes    schedule 30.07.2014
comment
Я получаю ожидаемый: именованный параметр в ошибке «Criteria1», используя это. Любые идеи - person Lewis Heslop; 30.07.2014
comment
В какой строке возникает ошибка? Вы объявили свои переменные? - person Nat Aes; 30.07.2014
comment
Я исправил ошибку, и ваше предложение отлично работает, спасибо, если мне нужна помощь с автофильтром, можно здесь прокомментировать? - person Lewis Heslop; 30.07.2014
comment
Вы можете, хотя вам, возможно, лучше опубликовать новый вопрос, если вы хотите, чтобы другие (и не только другие комментаторы этого конкретного вопроса) были предупреждены, чтобы помочь. - person Nat Aes; 30.07.2014
comment
Хорошо, я сделаю это, если вы не можете помочь мне в этом, я вернулся к работе над вашим кодом выше, и теперь я понимаю, что я не знаю, как бы я поступил ‹› где 111-11111 вместо этого массив. Есть ли у вас какие-либо знания об этом? - person Lewis Heslop; 30.07.2014
comment
В конце концов, я использовал менее эффективный метод для достижения своей цели, оказалось, что Microsoft не реализовала способ сделать это без использования расширенного фильтра или вспомогательного столбца. Мой метод был методом цикла вниз по списку с использованием ячеек (cellcount, 7) и if = to # or # or.. else deleterow . Если строка была удалена, число ячеек осталось прежним, если не +1 к числу ячеек. Этому методу потребовалось 4 секунды для обработки 1300 результатов. - person Lewis Heslop; 30.07.2014