彻底搜索了StackOverflow和谷歌,但没有找到答案。
尝试从Excel中的表格中删除重复值(不仅仅是电子表格)
当前代码:
Sub RemoveDuplicates()
ActiveSheet.ListObjects("Table1").ListColumns(1).DataBodyRange.RemoveDuplicates Columns:=1, Header:=xlYes
End Sub
问题:
此代码要求表格的每一列中的数据在被认为是重复之前是相同的。 (通过测试发现了这一点)。
目标:
仅在表的第1列中检查重复值,然后在找到重复项时删除整行。我怎样才能做到这一点?
答案 0 :(得分:3)
尝试以下代码:
Option Explicit
Sub RemoveDuplicates()
Dim TblRng As Range
Set TblRng = ActiveSheet.ListObjects("Table1").Range
TblRng.RemoveDuplicates Columns:=1, Header:=xlYes
End Sub
答案 1 :(得分:1)
或者
Option Explicit
Sub RemoveDuplicates()
ActiveSheet.ListObjects("Table1").DataBodyRange.RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
答案 2 :(得分:0)
答案 3 :(得分:0)
找到解决方案!实际上,这是一个解决方法。我为“.RemoveDuplicates”研究了20种不同的代码选项,并且没有成功。这是代码
Sub sbFindDuplicatesInColumn2()
Dim lastRow As Long
Dim matchFoundIndex As Long
Dim iCntr As Long
lastRow = Range("A65000").End(xlUp).Row
For iCntr = 1 To lastRow
If Cells(iCntr, 1) <> "" Then
matchFoundIndex = WorksheetFunction.Match(Cells(iCntr, 1), Range("A1:A" & lastRow), 0)
If iCntr <> matchFoundIndex Then
Cells(iCntr, 2).EntireRow.Delete xlShiftUp
'Line below is because when a row is deleted the row numbers change so the next row is skipped via the counter unless we have the line below
iCntr = iCntr - 1
End If
End If
Next
End Sub
关于代码的说明:
花了这么多时间来做这么简单的事情。我希望这会有所帮助!
答案 4 :(得分:0)
我也有类似的问题。在Microsoft Docs中,Columns:=参数定义为数组。将代码中的参数更改为Columns:= Array(1,1)后,结果与预期的一样。我的代码现在是:
RefDest.DataBodyRange.RemoveDuplicates Columns:=Array(1, 1), Header:=xlNo
希望有帮助。
答案 5 :(得分:0)
假设您的表名为“数据”,而要查看的列为“ NumCode”,则此代码有效且简单:
With ActiveWorkbook.Worksheets("Raw Data").ListObjects("Data")
.Range.RemoveDuplicates Columns:=Array(.ListColumns("NumCode").Index), Header:=xlYes
End With
因此,该列在表中的位置无关紧要,并且如果它被移动(添加或删除其他列)也没关系。