删除连续的行EXCEL VBA

我的数据是在列A,我想要删除所有连续的行,如B列代码

If Range("A" & i).Value = Range("A" & i).Offset(1, 0).Value Then Rows(i & ":" & i).Delete shift:=xlUp End If 

我写了脚本,但我不知道如何把它放在一个循环..任何帮助谢谢。

在这里输入图像说明

由于删除行非常耗时,因此执行此任务的最佳方法是使用Union函数将所有要删除的行收集到Range类的单个对象中,然后使用单个操作删除所有行。

下面是代码介绍如何做到这一点:

 Sub deleteConsecutiveRows() Dim wks As Excel.Worksheet Dim rng As Excel.Range Dim row As Long Dim lastRow As Long '------------------------------------------------------------------------- Set wks = Excel.ActiveSheet With wks lastRow = .Cells(.Rows.Count, 1).End(xlUp).row For row = 2 To lastRow If .Cells(row, 1).Value = .Cells(row - 1, 1).Value Then If rng Is Nothing Then Set rng = .Rows(row) Else Set rng = Excel.Union(rng, .Rows(row)) End If End If Next row End With 'In order to avoid Run-time error check if [rng] range is not empty, before removing it. If Not rng Is Nothing Then Call rng.EntireRow.Delete End If End Sub 

通常,删除行最好通过从底部开始并向顶部移动来完成。 这样做可以避免在删除行并将行向上移动时“跳过”一行。

 Dim rw As Long With Sheets("Sheet1") For rw = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If .Cells(rw, 1).Value = .Cells(rw - 1, 1).Value Then _ .Rows(rw).Delete Next rw End With 

再次,通常一列数据将有一个列标题标签,你不想参与删除过程。 但是,只要标签(如果有的话)与第2行中的单元格值不匹配,这应该不成问题。