擁有約50.000行提到出文件的我要刪除那些沒有在列B的具體數量我使用此代碼行:刪除行如果值不在範圍內
Sub DelRows()
Application.ScreenUpdating = False
Worksheets("2016").Activate
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For i = lastrow To 2 Step -1
If Cells(i, "B").Value <> "1060" And _
Cells(i, "B").Value <> "1061" And _
Cells(i, "B").Value <> "1062" And _
Cells(i, "B").Value <> "1063" And _
Cells(i, "B").Value <> "1064" And _
Cells(i, "B").Value <> "1105" And _
Cells(i, "B").Value <> "11050" And _
Cells(i, "B").Value <> "11051" And _
Cells(i, "B").Value <> "11053" And _
Cells(i, "B").Value <> "11054" And _
Cells(i, "B").Value <> "1160" And _
Cells(i, "B").Value <> "1161" And _
Cells(i, "B").Value <> "1162" And _
Cells(i, "B").Value <> "1163" And _
Cells(i, "B").Value <> "1164" And _
Cells(i, "B").Value <> "1166" And _
Cells(i, "B").Value <> "1168" And _
Cells(i, "B").Value <> "1169" And _
Cells(i, "B").Value <> "8060" And _
Cells(i, "B").Value <> "8061" And _
Cells(i, "B").Value <> "8062" And _
Cells(i, "B").Value <> "8063" And _
Cells(i, "B").Value <> "8064" And _
Cells(i, "B").Value <> "8068" And _
Cells(i, "B").Value <> "8192" Then
Cells(i, "B").EntireRow.Delete
End If
Next i
End Sub
這宏需要很多時間,並且似乎是最多的'和聲明'。
我試圖找出一個數組或過濾器,但作爲一個初學者很難。
我想提出的數字在單獨的工作表作爲範圍如:
A
1 1060
2 1061
3 1062
4 1063
5 1064
…
我試着部分弄明白條件區域在不同的紙張*上https://www.rondebruin.nl/win/winfiles/MoreDeleteCode.txt,但我不完全理解這個VBA代碼。
有人可以幫我嗎? 親切的問候, 理查德
您是否嘗試過實施該代碼?你有多少列數據? – SJR
要優化,請嘗試使用帶數組多條件的自動篩選器,並刪除單個任務中的行。或者,如果您不想使用過濾器,則可以創建一個不連續的範圍,然後再一次刪除所有範圍。因爲代碼中最耗時的操作是每次在工作表上執行操作時,在您刪除的情況下。並參考[this](http://www.cpearson.com/excel/optimize.htm),[this](https://stackoverflow.com/q/30959315/7690982)和[this](https:/ /stackoverflow.com/questions/46077673/improving-a-loop-to-delete-rows-in-excel-faster)。 – danieltakeshi