macros基于两个单元格删除工作表中的重复项

我试图删除一个表中的所有重复的条件下,一列中的A和B列中的值在任何其他行中的列A和B中重复。 列数是无关紧要的。 有人可以显示我要去哪里错了吗?

我现在的代码:

Sub RemoveDuplicate() Dim rCell As Range Dim rRange As Range Dim lCount As Long Dim sh As Worksheet Set sh = ThisWorkbook.Sheets("Data") lCount = sh.Range("A2", sh.Range("A2").End(xlDown)).Rows.Count + 1 Set rRange = sh.Range("A2:B" & lCount) For lCount = lCount To 1 Step -1 With rRange("A" & lCount & ",B" & lCount) If WorksheetFunction.CountIf(rRange, .Value) > 1 Then .EntireRow.Delete End If End With Next lCount End Sub 

例:

 | A | B | |00001|12345| - KEEP |00002|12345| - KEEP |00003|12345| - KEEP |00001|12346| - KEEP |00001|12346| - REMOVE |00001|12347| - KEEP |00004|12345| - KEEP |00002|12345| - REMOVE 

固定代码:

 Sub RemoveDuplicate() Dim lCount As Long Dim sh As Worksheet Set sh = ThisWorkbook.Sheets("Data") lCount = sh.Range("A2", sh.Range("A2").End(xlDown)).Rows.Count + 1 sh.Range("A1:B" & lCount).RemoveDuplicates Columns:=Array(1,2), Header:=xlYes End Sub 

例如,使用内置重复删除的excel

ActiveSheet.Range(“A1:B100”)。RemoveDuplicates Columns:= Array(1,2),Header:= xlYes

我的意思是:

这块

 With rRange("A" & lCount & ",B" & lCount) If WorksheetFunction.CountIf(rRange, .Value) > 1 Then .EntireRow.Delete End If End With 

应该

 If worksheetfunction.countifs( _ sh.range("A2:A" & lcount), sh.range("A" & lcount), _ sh.range("B2:B" & lcount), sh.range("B" & lcount)) > 0 Then sh.range("A" & lcount).Entirerow.delete end if