在excel vba中删除单元格范围内的重复项

我正在尝试删除Excel 2013 VBA中的重复项。 但我收到错误“对象不支持此属性或方法”。 问题是我没有静态范围select。 我想删除列heaader'abcd'中的重复项。

Cells.Find(what:="abcd").Activate ActiveCell.EntireColumn.Select Set rng = Selection ActiveSheet.rng.RemoveDuplicates 

您需要告诉Range.RemoveDuplicates方法使用哪个列。 另外,既然你已经expression了你有一个标题行,你应该告诉.RemoveDuplicates方法。

 Sub dedupe_abcd() Dim icol As Long With Sheets("Sheet1") '<-set this worksheet reference properly! icol = Application.Match("abcd", .Rows(1), 0) With .Cells(1, 1).CurrentRegion .RemoveDuplicates Columns:=icol, Header:=xlYes End With End With End Sub 

您的原始代码似乎要删除单个列中的重复项,而忽略周围的数据。 这种情况是非典型的,我已经包含了周围的数据,这样.RemoveDuplicates过程不会扰乱你的数据。 如果您真的想将RemoveDuplicates进程隔离到单个列,请回发评论。

删除单个列中的重复项

  Sub removeDuplicate() 'removeDuplicate Macro Columns("A:A").Select ActiveSheet.Range("$A$1:$A$117").RemoveDuplicates Columns:=Array(1), _ Header:=xlNo Range("A1").Select End Sub 

如果你有头,然后使用Header:=xlYes

根据您的要求增加您的范围。
你可以这样做到1000:

ActiveSheet.Range("$A$1:$A$1000")

更多信息在这里