删除特定行

时间:2015-11-19 03:58:52

标签: excel vba excel-vba excel-formula countif

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

EXAMPLE DATA IMAGE

EXAMPLE DATA IMAGE

所以我想留下第一个Rivor Minor253和最后一个Rivor Minor253,但必须删除所有中间的{{1}}。现在,我可以手动执行此操作,但我有超过3,000行,这将花费我几天的时间来完成,我可以生成一个删除重复的宏,但我不知道如何生成一个只会删除中间的宏。

有人能为我提供适合我描述的宏吗?

2 个答案:

答案 0 :(得分:0)

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

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

然后过滤该列以选择和删除行FALSE。

答案 1 :(得分:0)

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

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