2014-12-04 207 views
0

在Excel工作表中,我有来自列A1到G12的数据。在C列中,我有员工ID。从这我需要过滤某些员工ID和删除只有这些特定的行。 例如:我需要过滤51168,79783,70682这3个员工ID并删除。 我试图记录一个宏。如果特定的员工ID不在该地方意味着它删除了其他行。 任何人都可以帮助我解决这个问题。 这是我记录的代码,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

我对此代码有怀疑。当我执行此操作时,它不会删除其他行吗? – 2014-12-04 12:06:37

+0

您可以随时先用消息框对其进行测试。 – peege 2014-12-04 13:46:17

0

我估计中间的所有行也会被删除,包括隐藏的;由于列表并不长,你可能想过滤后删除行使用以下技巧

For Each cell In Range("A2", Range("A2").End(xlDown)).SpecialCells(xlCellTypeVisible) 
cell.EntireRow.Delete 
Next