對不起,如果這很簡單,這是我第一次嘗試VBA。刪除基於單元格內容的行(動態金額)
所以我想這個宏擺脫我不需要的行,併爲每個實體有一個總場(大約每20個記錄或左右)我做了這個腳本:
Dim i As Integer
Dim LastRow As Integer
LastRow = Range("A65536").End(xlUp).Row
For i = 3 To LastRow
If Range("C" & i) = "Result" Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=x1Up
End If
Next
而且,這工作完美!然後我嘗試了類似的東西..我試圖通過數據集中的每一行(記錄),然後如果某個字段不包含字符串「INVOICE」,那麼我不需要該行,我可以刪除它。於是我就加入到我的電流回路(爲什麼兩次循環?)所以,現在它看起來像這樣:
Dim i As Integer
Dim LastRow As Integer
LastRow = Range("A65536").End(xlUp).Row
For i = 3 To LastRow
If Range("C" & i) = "Result" Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=x1Up
End If
If Not InStr(1, Range("Q" & i), "INVOICE") Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=x1Up
End If
Next
那第二位,據我可以告訴只是隨機開始刪除沒有無緣無故行。 Q字段不包含發票的行有時會保留,如果包含發票,行也會保持不變。任何想法我做錯了什麼?
不要循環。使用Autofilter :)請參閱[這](http://stackoverflow.com/questions/11631363/how-to-copy-a-line-in-excel-using-a-specific-word-and-pasting-to-another -excel -s) –
...或者如果你打算循環,那麼從最後一行開始並運行('For i = LastRow to 3 Step -1'),這樣你就不會踩到你的循環索引當你刪除一行(因此向上移動下面的行...) –