【问题标题】:Excel macro delete row with consecutive duplicate column dataExcel宏删除具有连续重复列数据的行
【发布时间】:2020-01-13 06:56:47
【问题描述】:

我是 excel 宏编程的新手。我有一个包含超过 1000 行数据的 excel 文件,当第 44 列中的数据在连续行中重复时,我想删除整行。我附上了我一直试图调整但无济于事的脚本。 目前脚本删除了大部分重复的行,但不是全部,我不知道为什么。

Sub deleteDupes()
  Dim i As Long
With Sheets("Sheet1")
For i = .Cells(Rows.Count, 1).End(xlUp).row To 2 Step -1
    If .Cells(i, 44).Value = .Cells(i - 1, 44).Value Then _
        .Rows(i).Delete
Next i
End With


End Sub

【问题讨论】:

  • 我很快测试了你的代码,似乎没问题。您需要显示一些没有删除重复行的测试数据。不是全部。
  • 哪些行没有按预期处理?请举例...
  • 代码看起来可以删除连续的重复数据,但不能删除完整的数据集。我怀疑您有一些没有连续存储的重复数据。在运行代码之前尝试对第 44 列进行排序并检查结果。
  • 也许尝试使用 RemoveDuplicates?

标签: excel vba


【解决方案1】:

您应该一次删除所有行,而不是每行。您可以使用UNION method 来完成此操作。这将成功地完成你所描述的。如果您遇到问题,则与您的数据有关。

更重要的是,这将使您的程序快很多

Sub deleteDupes()
  Dim i As Long
With Sheets("Sheet1")

Dim killRng As Range

Set killRng = Rows(Rows.Count)

For i = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
    If .Cells(i, 44).Value = .Cells(i - 1, 44).Value Then _
        Set killRng = Union(Rows(i), killRng)
Next i
End With

    killRng.EntireRow.Delete

End Sub

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 2020-05-23
    • 2020-01-08
    • 2023-01-02
    • 2023-03-17
    • 1970-01-01
    • 2020-03-30
    相关资源
    最近更新 更多