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