我正试图从一个很大的电子表格中删除(大部分)重复的行。
如果每行两个单元格中的值相同,我可以说该行是重复的。
这里是一个例子:
1 a ewq
1 e weq
1 h ewq
2 b ddsfa
2 b as
2 i d
3 c fdsa
3 f ads
4 d fd
4 g as
在此示例中,第四行和第五行将重复,因为列“ A”和列“ B”中的值相同。决定值将始终在同一列中找到。
我希望根据重复状态摆脱第四行或第五行,并向上移动行。
我什至不确定这是否已经结束,但这是我到目前为止的结果(我遇到了失配错误):
Sub MasterRemoveDuplicates()
Dim Master As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Master = Workbooks("Master.csv").Worksheets("Master")
Last = 1
For i = 1 To 18211
If Range("A" & i) And Range("B" & i) <> Range("A" & (i + 1)) And Range("B" & (i + 1)) Then
Worksheets("Master").Rows(Last).Delete Shift:=xlShiftUp
Last = i + 1
Master.Activate
End If
Next i
MsgBox "Completed!", vbInformation, ""
reset_settings:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
任何关于如何实现这一目标的想法将不胜感激!
P.S。一切都在同一个工作表中。
答案 0 :(得分:3)
您正在尝试重新发明轮子。有一个现成的RemoveDuplicates命令。
Sub MasterRemoveDuplicates()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Workbooks("Master.csv").Worksheets("Master")
With .Range(.Cells(1, "A"), .Cells(.Rows.Count, "A").End(xlUp).Offset(0, 2))
.RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo
End With
End With
MsgBox "Completed!", vbInformation, ""
reset_settings:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
答案 1 :(得分:1)
如果if语句有误
尝试一下:
If Range("A" & i) <> Range("A" & (i + 1)) And Range("B" & i) <> Range("B" & (i + 1)) Then