如何在不删除调整数据的情况下在单个列中运行RemoveDuplicates?

时间:2016-08-22 22:50:45

标签: excel vba excel-vba

我在Excel中使用VBA删除活动范围内的重复值,该活动范围大约为12000行,并且在一列中。但是,当我在所选范围上运行RemoveDuplicates命令时,它会删除存在重复值的整个行。我的代码如下所示:

Sub Dedupe()

Range("B1").Select

ActiveCell.Resize(12109, 1).Select

ActiveCell.RemoveDuplicates Columns:=1, Header:=xlYes

End Sub

我的问题是,这会删除我计划接下来重复数据删除的相邻列中的重要数据。我想让流程循环大约900列,并分别为每列重复重复数据删除。有没有办法使用VBA代码删除当前选择中的重复值,但不能删除整行?

谢谢。

2 个答案:

答案 0 :(得分:1)

这是一个可以设置为循环的脚本。它将Column letter作为变量Finds the last Row。然后删除重复项。

您需要更改工作表名称(如果可以,请避免使用活动工作表,因为您最终可能会删除不想要的工作表上的重复项。

有一点需要注意的是,单元格值会在列中显示出来,因此如果A5与B5对齐,这会搞砸你的行。

sub test()
dim myCol as string

myCol = "B"

With Sheets("Sheet1")
    LastRow = .Range(myCol & .Rows.Count).End(xlUp).Row
    .Range(myCol & "1:" & myCol & LastRow).RemoveDuplicates Columns:=1, Header:=xlYes
End With

end sub

答案 1 :(得分:0)

你可以浏览以下列:

Option Explicit

Sub test()
    Dim col As Range

    With Worksheets("Dupes").Range("B:D") '<--| change "Dupes" with your actual sheet name and ""B:D" with your actual columns range
        For Each col In .Columns
            col.RemoveDuplicates Columns:=Array(1), Header:=xlYes
        Next col
    End With
End Sub