【问题标题】:How do i delete duplicated rows in VBA?如何删除 VBA 中的重复行?
【发布时间】:2020-04-14 00:28:09
【问题描述】:

有这个旧线程提供了删除重复行的解决方案,Delete all duplicate rows Excel vba。但如果我在数据上使用它,如下所示,该解决方案无法按预期工作。虽然我可以添加 .End(xlDown) 使得 Set rng = Range("A1", Range("E1").End(xlDown).End(xlDown.End(xlDown) 删除重复的行(设备 A)在屏幕截图中是分开的,有没有更好的方法?

我想澄清的另一个问题是 rng.RemoveDuplicates Columns:=Array(1, 2) 的含义是什么?因为即使我把它设置为 = Array(1) 甚至 Array(1,2,3,4,5) 我意识到它仍然会删除重复的行。

Sub test()


   With Worksheets("Output")
        Set rng = Range("A1", Range("E1").End(xlDown))
        rng.RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo
    End With


End Sub

【问题讨论】:

  • 是的,你可以找到最后一行,如图HERE,然后构建你的范围。
  • @SiddharthRout 但是当我用 End(xlUp) 替换 Set rng = Range("A1", Range("E1").End(xlDown)) 中的 End(xlDown) 时,没有任何反应。 ..
  • 找到最后一行,然后使用范围为Range("A1:E" & LastRow)
  • 那些是contain 重复信息的列。试试这个实验。录制宏,然后选择您的范围,然后单击Data|Remove Duplicates。现在在对话框中选择 A、C、E 列。完成该过程,然后检查代码。通过选择不同的列并检查代码来重复该过程。这将清楚它是如何工作的:)

标签: excel vba


【解决方案1】:

假设有数据的每一行在E列都有一个非空白单元格,你可以这样设置rng:

Set Rng = Range(Cells(1, 1), Cells(Range("A:A").Rows.Count, 5).End(xlUp))

您还可以像这样处理整个列:

Range("A:E").RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多