【发布时间】:2019-01-25 18:04:58
【问题描述】:
我使用下面的代码根据第二列从 xcol(第一个选定列)中删除重复项。使用 2 个 for 循环,我正在检查第 1 列中的 2 个单元格和第 2 列中的 2 个单元格是否相同,然后仅从第 1 列中删除重复的单元格。我的代码会删除所有数据,无论是否存在重复项。知道为什么吗?谢谢。
Sub RemoveDuplicates()
Dim xRow As Long
Dim xCol As Long
Dim x2Row As Long
Dim x2Col As Long
Dim xrg As Range
Dim xrg2 As Range
Dim xl As Long
Dim x2 As Long
On Error Resume Next
Set xrg = Application.InputBox("Select a range:", "Kutools for Excel", _
ActiveWindow.RangeSelection.AddressLocal, , , , , 8)
Set xrg2 = Application.InputBox("Select a range:", "Kutools for Excel", _
ActiveWindow.RangeSelection.AddressLocal, , , , , 8)
xRow = xrg.Rows.Count + xrg.Row - 1
x2Row = xrg2.Rows.Count + xrg2.Row - 1
xCol = xrg.Column
x2Col = xrg2.Column
'MsgBox xRow & ":" & xCol
Application.ScreenUpdating = False
For x2 = x2Row To 2 Step -1
For xl = xRow To 2 Step -1
If ((Cells(xl, Col) = Cells(xl - 1, xCol)) And (Cells(x2, x2Col) = Cells(x2 - 1, x2Col))) Then
Cells(xl, xCol) = ""
End If
Next xl
Next x2
Application.ScreenUpdating = True
End Sub
一个例子:
之前:
Group ID
2010 16
2010 16
2010 15
2012 15
之后(应该如何)
Group ID
2010 16
2010
2010 15
2012 15
【问题讨论】:
-
删除
On Error Resume Next。此行隐藏了 所有 错误消息,但错误仍然发生。如果您看不到错误,则无法修复它们,如果您不修复它们,您的代码将无法正常工作。在执行任何其他操作之前删除该行并修复您的错误。