Excel VBA筛选和删除数据

时间:2014-12-04 09:56:21

标签: excel vba excel-vba

在Excel工作表中,我有从A1到G12列的数据。在那个C列中,我有员工ID。由此我需要过滤某些员工ID并仅删除那些特定行。 示例:我需要过滤51168,79783,70682这3个员工ID并删除。 我试着录制一个宏。如果特定员工ID不在该位置,则意味着删除其他行。 任何人都可以帮我这个。 这是我记录的代码,

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

2 个答案:

答案 0 :(得分: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

还值得确保在删除所有空行之前至少有一个结果。

答案 1 :(得分:0)

我估计其间的所有行都会被删除,包括隐藏;由于列表不是那么长,您可能希望尝试在过滤后使用以下技巧删除行

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