删除以重复值开头的行
Remove rows if they begin with a duplicate value
假设我有一个包含客户发货清单和发货编号的电子表格。例如,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
不幸的是,它失败了。有人可以帮忙吗?
您的循环计数器(i
和 j
)设置不正确,j
应始终从 i + 1
开始,并且 i
必须在LastRow - 1
。您还应该使用 j
删除该行。我还使条件语句更简单一些。如果我的回复适合您,请将问题标记为已回答。
Sub DeleteOldClients()
Dim LastRow As Integer
LastRow = Range("A1").Cells.SpecialCells(xlCellTypeLastCell).Row
For i = 1 To LastRow - 1
For j = i + 1 To LastRow
If Range("A" & i).Value = Range("A" & j).Value Or Mid(Range("A" & i).Value, 1, 4) = Mid(Range("A" & j).Value, 1, 4) Then
Range("A" & j).EntireRow.Delete
LastRow = LastRow - 1
End If
Next j
Next i
End Sub
假设我有一个包含客户发货清单和发货编号的电子表格。例如,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
不幸的是,它失败了。有人可以帮忙吗?
您的循环计数器(i
和 j
)设置不正确,j
应始终从 i + 1
开始,并且 i
必须在LastRow - 1
。您还应该使用 j
删除该行。我还使条件语句更简单一些。如果我的回复适合您,请将问题标记为已回答。
Sub DeleteOldClients()
Dim LastRow As Integer
LastRow = Range("A1").Cells.SpecialCells(xlCellTypeLastCell).Row
For i = 1 To LastRow - 1
For j = i + 1 To LastRow
If Range("A" & i).Value = Range("A" & j).Value Or Mid(Range("A" & i).Value, 1, 4) = Mid(Range("A" & j).Value, 1, 4) Then
Range("A" & j).EntireRow.Delete
LastRow = LastRow - 1
End If
Next j
Next i
End Sub