2014-12-04 243 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