我试图删除工作表中的所有重复项,条件是一列中的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
错误应该在这行'如果WorksheetFunction.CountIf(rRange,.Value)> 1 Then'。当你根据你的'With'语句调用'.Value'时,excel会返回一个数组,而不是一个条件。尝试为您的场景使用'CountIfs'函数 – Rosetta
尽量不要使用'lCount'来计算行数和迭代次数。您可以声明一个单独的变量,例如为了达到迭代的目的。这使得你的代码不会对自己产生困惑 – Rosetta