简体   繁体   English

如何删除 VBA 中的重复行?

[英]How do i delete duplicated rows in VBA?

There is this old thread that provides a solution to delete duplicated rows, Delete all duplicate rows Excel vba .But if i use it on the data as shown below, that solution doesn't work as intended.有这个旧线程提供了删除重复行的解决方案, 删除所有重复行 Excel vba 。但是如果我在数据上使用它,如下所示,该解决方案无法按预期工作。 Although i can add.End(xlDown) such that Set rng = Range("A1", Range("E1").End(xlDown).End(xlDown.End(xlDown) to delete the duplicated rows(Device A) that are separated in the screenshot, is there a better way to do it?虽然我可以 add.End(xlDown) 这样 Set rng = Range("A1", Range("E1").End(xlDown).End(xlDown.End(xlDown) 删除重复的行(设备 A)在屏幕截图中是分开的,有没有更好的方法呢?

Another question that i want to clarify is what is the meaning of rng.RemoveDuplicates Columns:=Array(1, 2)?我想澄清的另一个问题是 rng.RemoveDuplicates Columns:=Array(1, 2) 的含义是什么? Because even if i put it as = Array(1) or even Array(1,2,3,4,5) i realised it will still delete the duplicated rows.因为即使我把它设置为 = 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

在此处输入图像描述

Assuming that each row with data has a non-blank cell in column E, you can set rng like this:假设每行数据在 E 列中都有一个非空白单元格,您可以像这样设置 rng:

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

You can also process the entire columns like this:您还可以像这样处理整个列:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM