我想删除表中的重复值。它是具有数千行的ListObject表。 我无法使用我的代码,并且我正在对区域使用功能RemoveDuplicates,条件是如果2个相对列中有重复项,则删除表中的行。
这是运行代码之前的样子:
在我的代码中,仅基于C:C和E:E列,我需要检查这两行中每行是否有重复项,然后删除它们,仅保留一行。
这是我想要的结果:
这是我的无效代码。我不确定是因为我的表是列表对象还是因为分配数组错误?
Sub test_Duplicate()
Dim endrow As Long
Dim rng As Range
Dim ws As Worksheet
Set ws = Sheets("Sheet4")
With ws
endrow = .Cells(.Rows.Count, 3).End(xlUp).Row
Set rng = .Range(.Cells(2, 3), .Cells(endrow, 6))
rng.RemoveDuplicates Columns:=Array(1, 3), Header:=xlNo
End With
End Sub
我将不胜感激。 我注意到无论我的数据是作为List Object出现在表中还是没有它,我还是会收到错误nr 9。
答案 0 :(得分:0)
这将起作用:
只需更改表名即可。我的名字是Table1
Sub test_Duplicate()
Dim ws As Worksheet
Set ws = Sheets("Sheet4")
With ws
.Range("Table1[#All]").RemoveDuplicates Columns:=Array(1, 3), Header:=xlYes
End With
End Sub
选择表时,可以在Design
选项卡上找到表名。
答案 1 :(得分:0)
这是我通过浏览网页找到的最佳解决方案。
Sub RemoveDuplicates()
Const TEST_COLUMN As String = "A"
Dim i As Long
Dim iLastRow As Long
Dim rng As Range
Dim ws As Worksheet
Set ws = Worksheets("Sheet4")
With ws
iLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To iLastRow
If .Evaluate("SUMPRODUCT(--(A" & i & ":A" & iLastRow & "=A" & i & ")," & _
"--(I" & i & ":I" & iLastRow & "=I" & i & "))") > 1 Then
If rng Is Nothing Then
Set rng = .Cells(i, "A").Resize(, 9)
Else
Set rng = Union(rng, .Cells(i, "A").Resize(, 9))
End If
End If
Next i
If Not rng Is Nothing Then rng.Delete
End With
End Sub