【问题标题】:VBA- all data is copied instead of duplicate dataVBA-复制所有数据而不是重复数据
【发布时间】:2018-09-27 18:46:33
【问题描述】:

我的工作簿中有两张工作表。 *编辑:我想出了记录没有从 B8 开始的原因。我需要有标题。

主表

  1. 标头范围为 B7:Y7,记录从 B8 开始

更新副本表

  1. 主表中的重复数据将被复制并粘贴到此处。
  2. 与 Master Sheet 具有相同的标题范围,记录从 B8 开始

我在这里找到了代码,并对其进行了编辑以适合我的数据,但是,它不仅复制了重复数据,还复制了所有数据。并且只删除一个重复数据的实例。 (示例:4 个重复项,仅删除 1 个)。数据顺序也颠倒了。

Sub tryagain()
Dim Rng As Range, i As Long
        Application.ScreenUpdating = False
        Set Rng = Range("B3:B" & Range("B" & Rows.Count).End(xlUp).Row)
        For i = Rng.Rows.Count To 1 Step -1
            If Application.WorksheetFunction.CountIf(Rng, Cells(i, "B")) > 1 Then
              lr = Sheets("Sheet2").Cells(Rows.Count, "B").End(xlUp).Row + 1
              Rows(i).EntireRow.Copy Destination:=Sheets("Sheet2").Range("A" & lr)
              'Rows(i).EntireRow.Delete
            End If
        Next i
        Application.ScreenUpdating = True
End Sub

记录也没有像预期的那样从 B8 开始。我尝试了很多方法,这对我来说似乎是一个死胡同。非常感谢您的任何帮助。

【问题讨论】:

  • 明确一点,这就是您要找的吗? -> 将表保存到一个范围中,从该临时范围中删除所有不重复的记录,将该范围粘贴到另一个工作表中。
  • 嗨@DavidG hrm。我想要的是,当我单击水果 dups 中的按钮时,我将显示主表中的所有重复数据,并删除主表中的重复数据。这是因为我希望用户看到哪个记录是重复的。
  • 所以:您只想将重复项复制到另一个工作表中,然后(相同步骤?)删除主工作表中的重复项。对吗?
  • @DavidG 是的。或者删除部分可以单独完成

标签: vba excel


【解决方案1】:

尝试一次做一个步骤:

  1. 声明 2 个范围(A 和 B)
  2. 将表格从第一张表复制到第二张表中
  3. 将工作表 1 中的数据设置为范围 A,将工作表 2 中的数据设置为范围 B
  4. Remove all duplicates来自A
  5. Remove all non duplicates 来自 B
  6. 排序范围

【讨论】:

  • 嗨,大卫。指令1意味着我将范围声明为变量对吗?
  • 声明所有需要的变量将是第 0 步。第 1 步是将所有需要的数据复制到一个范围对象中(正如您在第 4 行的代码中所做的那样)。查看this 使用范围对象的分步指南。
  • 如果我的帖子对您​​有帮助,请考虑接受它作为答案。
  • 嗨,大卫。感谢您的帮助,因为我对 vba 很陌生,我仍在努力做您提到的所有事情。一旦成功,我会接受它作为答案。
  • 您可以添加有关您的确切问题的详细信息吗?我也许可以进一步帮助您。
猜你喜欢
  • 2011-07-30
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 2023-03-16
  • 2022-01-13
  • 1970-01-01
相关资源
最近更新 更多