2010-08-17 149 views
0

工作表首先根據列A(帳號)然後列C(日期)排序。Excel VBA腳本刪除最近的重複記錄

我有下面的腳本,刪除重複的記錄,並保持最新的。

Sub DeleteTheOldies() 
Dim RowNdx As Long 
For RowNdx = Range("a1").End(xlDown).Row To 2 Step -1 
Do While Cells(RowNdx, "a").Value = Cells(RowNdx - 1, "a").Value 
If Cells(RowNdx, "c").Value <= Cells(RowNdx - 1, "c").Value Then 
Rows(RowNdx).Delete 
Else 
Rows(RowNdx - 1).Delete 
End If 
RowNdx = RowNdx - 1 
If RowNdx = 1 Then Exit Sub 
Loop 
Next RowNdx 
End Sub 

的樣本數據:

 
751063031 5600084443 17-AUG-10 
754199715 5600084438 17-AUG-10 
757129104 5600084438 17-AUG-10 
757307416 5600084438 17-AUG-10 

我需要劇本的修改版本給下面的輸出(刪除最近和保持:當前腳本的

 
Column A  Column B Column C 
751063031 1605621498 03-JUL-10 
751063031 5600003138 18-JUL-10 
751063031 5600084443 17-AUG-10 
754199715 1605621498 27-FEB-10 
754199715 5600084438 17-AUG-10 
757129104 5600084892 12-NOV-09 
757129104 5600084438 17-AUG-10 
757307416 1605621498 27-FEB-10 
757307416 5600084438 17-AUG-10 

輸出休息)

 
751063031 1605621498 03-JUL-10 
751063031 5600003138 18-JUL-10 
754199715 1605621498 27-FEB-10 
757129104 5600084892 12-NOV-09 
757307416 1605621498 27-FEB-10  
+0

使用數據庫系統可能會更容易實現您的最終結果。 – bernie 2010-08-17 17:04:53

回答

0

請嘗試以下操作。這將與上面的示例一起使用。如果您有其他限制/要求,則可能需要進行調整。

Sub NewStuff() 

    Dim RowNdx As Long 
    Dim CurVal As String 

    For RowNdx = 1 To Range("a1").End(xlDown) 

     If Cells(RowNdx, "a").Value = Empty Then 

      Exit For 

     End If 

     If Cells(RowNdx, "a").Value <> Cells(RowNdx + 1, "a").Value Then 

      Rows(RowNdx).Delete 
      RowNdx = RowNdx - 1 

     End If 

    Next RowNdx 

End Sub