【问题标题】:Locate duplicates and delete entire row (using Do While and If Loop)查找重复项并删除整行(使用 Do While 和 If 循环)
【发布时间】:2020-12-06 17:23:57
【问题描述】:

我有需要删除重复项的大型数据集。数据有一个包含 ID 号的列 - 我想遍历此列以查找重复的 ID。如果存在重复项,我希望代码删除重复项。

我使用的数据集始终具有相同的列 - 但我将使用的行数发生变化:

Do While Cells(b,4).Value ""

然后在这个循环中,我想要一个 If 循环来查找重复项并删除它们 - 最好如何做到这一点?

【问题讨论】:

  • 听起来你在重新发明轮子。 docs.microsoft.com/en-us/office/vba/api/…
  • 使用删除重复项,它在数据选项卡上。
  • @BigBen 非常正确,我认为这可行 - 但是,由于我无法定义范围,您是否建议我仍然使用 Do While 循环?
  • 我猜你需要find the last row
  • @ScottCraner 也许我应该更清楚这将成为工具的一部分 - 用户将按下按钮,代码将清理数据(清理的一部分是删除重复项)跨度>

标签: excel vba duplicates


【解决方案1】:

正如 Scott Craner 所说,有一个基本的 Excel 功能可以处理这个问题。

我的 Excel 工作表如下所示:

Col_D Col_E
    1     1
    1     1
    1     2
    1     2
    1     3
    2     1
    2     2
    2     2
    2     2
    2     3

从“数据”选项卡中记录“删除重复项”,产生以下 VBA 命令:

ActiveSheet.Range("$D$1:$E$11").RemoveDuplicates Columns:=Array(1, 2), Header :=xlYes

含义如下:

Range("$D$1:$E$11")  : Remove the duplicates from that range
Columns:=Array(1, 2) : Both column 1 (D) and 2 (E) need to be taken into account
                         (the duplicates of the combination of both columns)
Header :=xlYes       : A header row is present

结果是:

Col_A Col_B
    1     1
    1     2
    1     3
    2     1
    2     2
    2     3

【讨论】:

  • 干杯 - 我将在我的代码中使用 Remove Duplicate 函数,我试图解决的唯一问题是如何将此函数应用于代码中未定义最后一行的数据集.我想我需要使用: i = .Range("E" & .Rows.Count).End(xlUp).Row ActiveSheet.Range("A" & i)
猜你喜欢
  • 2013-02-16
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
相关资源
最近更新 更多