使用 VBA 删除重复项不仅仅删除重复项

Removing duplicates with VBA removes more than just duplicates

我正在尝试创建一个代码,它将向 table 添加新行,然后根据 table 中其中一列的信息删除重复项。我用的不是很熟练VBA所以大部分代码都是自己记录调整的

我的问题是,一旦代码到达“删除重复项”部分,它删除的不仅仅是重复项,即我最初有 20 条记录,我又添加了 10 条,其中 5 条是重复项,因此最终结果是我应该留下 25 行原始行,不幸的是我的代码删除了更多而不是 25 行我最终只有 17 行,所以少于原始数量!

如果你能帮助我理解为什么会发生这种情况以及如何解决这个问题,我将不胜感激。

Sub Add_New_Orders()
Add_New_Orders Macro

Sheets("Source1_DateRange").Select
Range("DateRange[[Customer]:[Order No]]").Select
Selection.Copy
Sheets("Overview").Select
Range("B7").Select
Selection.End(xlDown).Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
ActiveSheet.Range("Overview[#All]").RemoveDuplicates Columns:=Array(3), Header:= _
    xlYes  ' I also tried to use Columns"=Column(3) with same result
    
End Sub

我自己找到了解决办法。不知道它是怎么发生的,但它现在按预期工作。 我在代码中添加了 2 行,它以某种方式为我解决了这个问题。我确实相信,因为我没有 select/specify 我试图从中删除重复项的列,所以代码在我的 table 中搜索所有重复项,而不仅仅是在第 3 列中。

Sub Add_New_Orders
Sheets("Source1_DateRange").Select
Range("DateRange[[Customer]:[Order No]]").Select
Selection.Copy
Sheets("Overview").Select
Range("B7").Select
Selection.End(xlDown).Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
Range("Overview[[#All],[Order no]]").Select ' NEW ADDED LINE
Range("C9").Activate ' NEW ADDED LINE
ActiveSheet.Range("Overview[#All]").RemoveDuplicates Columns:=3, Header:= _
    xlYes
    

结束子