2014-12-04 7 views
0

В листе Excel у меня есть данные от столбца A1 до G12. В этом столбце C у меня есть идентификатор сотрудника. Из этого мне нужно отфильтровать определенный идентификатор сотрудника и удалить только те отдельные строки. Пример: Мне нужно отфильтровать 51168, 79783, 70682 эти 3 идентификатора сотрудника и удалить. Я попытался записать макрос. Если конкретный идентификатор сотрудника не находится в месте, это означает, что он удаляет некоторую другую строку. Может ли кто-нибудь помочь мне в этом. Это код, который я записал,Excel VBA фильтр и удалить данные

ActiveSheet.Range("$A$1:$I$12").AutoFilter Field:=3, Criteria1:=Array(_ 
"51168", "70682", "79783"), Operator:=xlFilterValuesRows("2:2").Select 
Range("C2").Activate 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Delete Shift:=xlUp 
Range("C1").Select 
ActiveSheet.Range("$A$1:$I$9").AutoFilter Field:=3 

ответ

0

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

что-то вроде:

ActiveSheet.Range("$A$1:$I$12").AutoFilter Field:=3, Criteria1:=Array(_ 
"51168", "70682", "79783"), Operator:=xlFilterValues 
Range("A2").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.EntireRow.Delete 

также его стоит убедившись, что вы, по крайней мере, один результат, прежде чем удалить все пустые строки без причины.

+0

У меня есть сомнения в этом коде. Когда я выполню это, он не удалит другие строки правильно? –

+0

Вы всегда можете проверить это с помощью окна сообщений. – peege

0

Я считаю, что все строки между ними будут удалены, включая скрытые; поскольку список не так уж длинный, вы можете попытаться удалить строки после следующего трюка после фильтрации

For Each cell In Range("A2", Range("A2").End(xlDown)).SpecialCells(xlCellTypeVisible) 
cell.EntireRow.Delete 
Next 
Смежные вопросы