删除特定行

Deleting specific rows

我必须为里程计算器生成一个 Excel VBA 宏,所以我必须保留特定名称的第一个条目和最后一个条目,并删除其间的所有值。例如:

EXAMPLE DATA IMAGE

所以我想留下第一个Rivor Minor253和最后一个Rivor Minor253,但是中间的必须全部删除。现在,我可以手动执行此操作,但我有超过 3,000 行,这需要几天时间才能完成,而且我可以生成一个删除重复项的宏,但我不知道如何生成一个只删除中间行的宏。

谁能提供一个符合我描述的宏?

如果愿意,请先打开录制宏。假设 CHAINAGE 在 ColumnA 中,在 Row39 中并复制下来以适应,请尝试:

=OR(COUNTIF(B:B39,B39)=1,COUNTIF(B:B39,B39)=COUNTIF(B:B,B39))  

然后将该列筛选为 select 并删除 FALSE 行。

作为一个宏,这非常简单。

Sub del_brick()
    Dim fr As Long, lr As Long

    With Worksheets("Sheet1")  '<~~ set this properly!
        lr = Application.Match("zzz", .Columns(2))
        Do While lr > 40  '<~~ if lr is above row, there is nothing to delete
            fr = Application.Match(.Cells(lr, 2).Value2, .Columns(2), 0)
            If CBool(lr - fr - 1) Then
                .Range(.Cells(fr + 1, 1), .Cells(lr - 1, 1)).EntireRow.Delete
            End If
            lr = fr - 1
        Loop
    End With
End Sub