2016-03-08 91 views
0

我是这个博客的新手,并且请求你们全部帮助我处理下面的代码。目前我正在尝试选择标准(基于唯一代码列表)并删除我无法执行的未过滤数据。因此请求为此添加程序。由于如何使用VBA从Excel 2010中删除未过滤(隐藏)的数据

ActiveSheet.Range("A5:K125000").AutoFilter Field:=11, Criteria1:=EngID 
ActiveSheet.Range("A5:K125000").Select 
ActiveSheet.Rows("A5:K125000").EntireRows.Hidden.Delete 
ActiveSheet.Rows.Hidden = False 
+0

容易过滤对于不符合标准,并使用'删除记录Specialcells(xlcelltypevisible)'否则你将不得不循环。 – Rory

+0

嘿rory感谢您的帮助,请你给我提供循环程序?我尝试使用这个Criterial =“<> EngID”删除以外的过滤,但它没有采取:( – brsindhe

回答

0

这里的反向滤波方法:

With ActiveSheet.Range("A5:K125000") 
    .AutoFilter Field:=11, Criteria1:="<>" & EngID 
    If .Columns(1).SpecialCells(xlCellTypeVisible).Count > 1 Then 
     .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
    End If 
    .AutoFilter 
End With 

和这里的循环方法:

Dim rgHidden    As Range 
Dim n      As Long 
ActiveSheet.Range("A5:K125000").AutoFilter Field:=11, Criteria1:=EngID 
For n = 5 To 125000 
    If Rows(n).Hidden Then 
     If rgHidden Is Nothing Then 
      Set rgHidden = Rows(n) 
     Else 
      Set rgHidden = Union(rgHidden, Rows(n)) 
     End If 
    End If 
Next n 
If Not rgHidden Is Nothing Then rgHidden.EntireRow.Delete 
ActiveSheet.Range("A5:K125000").AutoFilter 
+0

感谢rory :) ur星................... 。再次感谢它运作良好:) – brsindhe