如果行以重复值开头,则删除行

时间:2015-02-01 22:34:40

标签: excel vba duplicates

假设我有一张电子表格,其中包含客户出货清单和出货编号。例如,DairyQueen 024918。每个货件号码是六位数。这个货物清单全天都会增加。在一天结束时,我们希望查看每家公司的最新货件。

基本上,我想删除具有重复客户端名称但没有重复客户端发货的行,并且只保留最新的,所以列表底部的那一行。由于从另一个系统检索数据的特定设置,无法将客户端和货件编号放在单独的列中。

以下是一个例子:

Costco 002456
DairyQueen 001239
Costco 001335
DairyQueen 008448
Menards 001444
Menards 002448

我想留下这个清单:

Costco 001335
DairyQueen 008448
Menards 002448

到目前为止,我尝试过的代码如下:

Sub DeleteOldClients()
    Dim LastRow As Integer
    LastRow = Range("A1").Cells.SpecialCells(xlCellTypeLastCell).Row
    For i = 1 To LastRow
        For j = 1 To LastRow
            If (Left(Range("A" & i).Value, Len(Range("A" & i).Value) - 7) = Left(Range("A" & j).Value, Len(Range("A" & j).Value) - 7)) Then
                Range("A" & i).EntireRow.Delete
                LastRow = LastRow - 1
            End If
        Next j
    Next i
End Sub

不幸的是,它失败了。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您的循环计数器(ij)未正确设置,j应始终从i + 1开始,而i必须以{{结尾1}}。您还应该使用LastRow - 1删除该行。我还使条件语句更简单一些。如果我的回复适合您,请将问题标记为已回答。

j