单数据在单元格中时有效删除行

我想从Excel工作表中删除特定的行,如果包含在特定的单元格中的数据与其邻居不同

该表已经sorting,因此我可以有这个比较。

这里的问题是,尽pipe3000行左右的表格不到一分钟,但是当这个数字升级到60,000时,function似乎永远不会结束。

我在尝试什么? 有没有更有效的方法?

Private Function DeleteSingleItemLines() As Long Dim lastRow As Long With ActiveSheet lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row End With lastRow = lastRow - 2 For rwIndex = 6 To lastRow If Cells(rwIndex, "B").Value <> Cells(rwIndex + 1, "B").Value _ And Cells(rwIndex, "B").Value <> Cells(rwIndex - 1, "B").Value Then Rows(rwIndex & ":" & rwIndex).Delete Shift:=xlUp lastRow = lastRow - 1 rwIndex = rwIndex - 1 End If Next rwIndex DeleteSingleItemLines = lastRow End Function 

那么,首先,通过对代码进行非常小的更改,可以通过将属性ScreenUpdating设置为false(在声明variables之后立即写入此代码),使其更快,如下所示:

 Application.ScreenUpdating = False 

上面的代码保持Excel不会在屏幕上显示更改,并使处理速度更快。

以另一种方式思考你的问题,你可以在你的工作表中放入一个公式,返回TRUE或者FALSE,然后使用AutoFilter一次删除它们。 也可以在vba代码中做到这一点。

最好的祝福,

安倍晋三