如果您管理您的數據,如數據庫,並希望刪除特定行了出來,並有可能對其進行過濾,還有一招,以加快您刪除 - 處理。與簡單的循環過程相比,這是非常快的:
我比較了不同示例(4806行)的時間。
- 標準環缺失:2:25
- 範圍缺失:0:20
- 篩選缺失:0點01
例:我在「Tabelle5數據'並且想要刪除特定的行。數據從第6行開始。第1列中以「OLD#」開頭的每一行都應該被刪除。
1)在此標準溶液(最長時間):
Dim i As Integer, counter As Integer
Dim strToRemove As String, strToRemoveRange As String
strToRemove = "OLD#"
strToRemoveRange = ""
counter = 0
With Tabelle5
For i = .UsedRange.Rows.Count To 6 Step -1
If Mid(.Cells(i, 1).value, 1, 4) = strToRemove Then
.Rows(i).Delete Shift:=xlUp
End If
Next i
End With
2)在這裏,範圍溶液(中間時間):
Dim i As Integer, counter As Integer
Dim strToRemove As String, strToRemoveRange As String
strToRemove = "OLD#"
strToRemoveRange = ""
counter = 0
With Tabelle5
For i = .UsedRange.Rows.Count To 6 Step -1
If Mid(.Cells(i, 1).value, 1, 4) = strToRemove Then
If strToRemoveRange = "" Then
strToRemoveRange = CStr(i) & ":" & CStr(i)
Else
strToRemoveRange = strToRemoveRange & "," & CStr(i) & ":" & CStr(i)
End If
counter = counter + 1
End If
If counter Mod 25 = 0 Then
If counter > 0 Then
.Range(strToRemoveRange).Delete Shift:=xlUp
strToRemoveRange = ""
counter = 0
End If
End If
Next i
If Len(strToRemoveRange) > 0 Then
'.Range(strToRemoveRange).Delete Shift:=xlUp
End If
End With
3)過濾溶液(最短的時間):
Dim i As Integer, counter As Integer
Dim strToRemove As String, strToRemoveRange As String
strToRemove = "OLD#"
strToRemoveRange = ""
counter = 0
With Tabelle5
For i = .UsedRange.Rows.Count To 6 Step -1
If Mid(.Cells(i, 1).value, 1, 4) = strToRemove Then
.Cells(i, 1).Interior.Color = RGB(0, 255, 0)
counter = counter + 1
End If
Next i
If counter > 0 Then
.Rows("5:5").AutoFilter
.AutoFilter.Sort.SortFields.Clear
.AutoFilter.Sort.SortFields.Add(_
Range("A5"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(0, 255, 0)
.AutoFilter.Sort.Header = xlYes
.AutoFilter.Sort.MatchCase = False
.AutoFilter.Sort.Orientation = xlTopToBottom
.AutoFilter.Sort.SortMethod = xlPinYin
.AutoFilter.Sort.Apply
.Rows("6:" & CStr(counter + 5)).Delete Shift:=xlUp
.Rows("5:5").AutoFilter
End If
End With
這裏的綠線將排在最前面,一定範圍的綠色點擊將被整體刪除。這是我知道的最快的方式! :-)
我希望它能幫助別人!
此致 湯姆
'範圍([T5],[T5] .END(xlDown))'將選擇的所有連續細胞與它們的值開始於'T5'。除非你真的有900K線,這肯定會快得多... – Floris 2013-03-13 00:56:44
@弗洛里斯是的,我真的有很多細胞... – scaevity 2013-03-13 01:03:19