我是VBA的新手,我試圖想出一種方法來刪除所有行(並將單元格向上移動,如果可能的話),其中網站列單元格包含單詞none
。該表包含5000多條記錄,這將爲我節省大量時間。如果單元格包含字符串,則刪除整行X
我欣賞任何建議。提前謝謝了!
http://i39.tinypic.com/5ano1d.png
我是VBA的新手,我試圖想出一種方法來刪除所有行(並將單元格向上移動,如果可能的話),其中網站列單元格包含單詞none
。該表包含5000多條記錄,這將爲我節省大量時間。如果單元格包含字符串,則刪除整行X
我欣賞任何建議。提前謝謝了!
http://i39.tinypic.com/5ano1d.png
這不是一個VBA任務 - 這個特定的任務是最簡單的解決與自動過濾器。
1.Insert自動過濾器(在Excel 2010中點擊首頁 - >(編輯)排序&過濾器 - >過濾器)
2.過濾器的 '網站' 列
3.標記 '無',並刪除他們
4.清除過濾器
嘗試......
Dim r as Range
Dim x as Integer
For x = 5000 to 4 step -1 '---> or change as you want //Thanx 4 KazJaw
set r = range("E" & format(x))
if ucase(r.Value) = "NONE" then
Rows(x).EntireRow.Delete
end if
Next
這是暗示在另一條評論,但你可以嘗試這樣的事情。
Sub FilterAndDelete()
Application.DisplayAlerts = False
With Sheet1 'Change this to your sheet name
.AutoFilterMode = False
.Range("A3:K3").AutoFilter
.Range("A3:K3").AutoFilter Field:=5, Criteria1:="none"
.UsedRange.Offset(1, 0).Resize(ActiveSheet.UsedRange.Rows.Count - 1).Rows.Delete
End With
Application.DisplayAlerts = True
End Sub
我沒有測試過這一點,它是從內存中,所以它可能需要一些調整,但應把工作,而無需通過數千行的循環完成。您需要刪除11-Jul,以便UsedRange
正確,或將偏移量更改爲.Offset(1,0)
中的2行而不是1。
通常,在我做.Delete
之前,我會用.Select
代替Delete來運行宏,我可以確定刪除了正確的範圍,這可能值得做檢查以確保刪除合適的範圍。
好吧,我知道這對VBA,但如果你需要爲一次過批量做刪除您可以使用以下Excel功能:http://blog.contextures.com/archives/2010/06/21/fast-way-to-find-and-delete-excel-rows/希望這有助於任何人
實例看字符串「紙」:
輝煌!我可以找到批量執行此操作的唯一方法(不使用VBA)。 – Holf
這是應該被接受的答案。當您有超過50,000行時,使用過濾器是不可行的 –
僅供參考:這是一個僅限於Windows的解決方案,不適用於OSX Excel unfortunatley。 –
在「開發人員選項卡」中,轉到「Visual Basic」並創建一個模塊。複製粘貼以下內容。記住改變代碼,取決於你想要的。然後運行該模塊。
Sub sbDelete_Rows_IF_Cell_Contains_String_Text_Value()
Dim lRow As Long
Dim iCntr As Long
lRow = 390
For iCntr = lRow To 1 Step -1
If Cells(iCntr, 5).Value = "none" Then
Rows(iCntr).Delete
End If
Next
End Sub
lRow:將當前文件具有的行數。
「5」中的數字「如果」是第五(E)列
你有沒有嘗試過任何代碼(有**本網站的如何刪除使用VBA行非常**的例子很多),如果沒有,你有沒有考慮排序,然後刪除一個連續範圍,這對於大容量的可無論如何要快得多? – pnuts
有一個答案几乎就是你正在尋找的。你只需要修改自動過濾器的標準。 [有效的方法來刪除整行,如果...](http://stackoverflow.com/a/16901714/138938) –