2016-10-14 57 views
1

我想構建一個可以過濾和刪除大約35,000行的代碼。篩選並刪除整行

我用下面的代碼,但它需要很多時間(超過10分鐘),任何人都可以請幫助我更快?

代碼1:

Range("$A$1:$S$50000").AutoFilter Field:=19, Criteria1:="Delete" 
ActiveSheet.AutoFilter.Range.Offset(1, 0).Rows.SpecialCells(xlCellTypeVisible).Delete (xlShiftUp) 

代碼2:

Dim RngToDelete As Range 
Range("$A$1:$S$50000").AutoFilter Field:=19, Criteria1:="Delete" 
Set RngToDelete = Selection.SpecialCells(xlCellTypeVisible) 
RngToDelete.Delete 

感謝, Amith

+0

[Excel VBA性能 - 1百萬行 - 在1分鐘內刪除包含值的行]可能出現重複(http://stackoverflow.com/questions/30959315/excel-vba-performance-1-million- rows-delete-rows-containing-a-value-in-less) –

+0

你已經'application.screenupdating = FALSE'了嗎?這將節省大量的時間。 –

+0

是的,我曾經使用過 - application.screenupdating = FALSE –

回答

0

您可以通過使用AdvancedFilter具有更快的業績完成任務。而不VBA

A.溶液

數據 - >高級篩選,選擇「篩選列表就地」和在數據範圍和標準繼續進行。

B.解決方案使用VBA代碼

範圍( 「A1:S50000」)AdvancedFilter動作:= xlFilterInPlace,CriteriaRange:=範圍( 「U1:U2」),獨特之處:=假

在單元格U1上使用字段名(第19列)定義條件,在單元格U2上使用'<>刪除'定義條件。當然,你可以隨時把你的標準範圍放在其他地方。