对不起,如果这很简单,这是我第一次尝试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'),这样你就不会踩到你的循环索引当你删除一行(因此向上移动下面的行...) –