2016-03-08 95 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