【问题标题】:Removing duplicates with VBA removes more than just duplicates使用 VBA 删除重复项不仅可以删除重复项
【发布时间】:2021-07-16 12:55:46
【问题描述】:

我正在尝试创建一个代码,该代码将向表中添加新行,然后根据该表中某一列的信息删除重复项。我对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

【问题讨论】:

    标签: duplicates delete-row


    【解决方案1】:

    我自己设法找到了解决方案。不知道它是如何发生的,但它现在按预期工作。 我在代码中添加了 2 行,它以某种方式为我解决了这个问题。我确实相信,因为我没有选择/指定我试图从中删除重复项的列,所以代码会在我的表中搜索所有重复项,而不仅仅是在第 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
        
    

    结束子

    【讨论】:

      猜你喜欢
      • 2017-05-03
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多