首页 > 解决方案 > 将 2 行单元格与电子表格中同一列中的行下单元格进行比较时,根据重复值删除行

问题描述

我正在尝试从一个非常大的电子表格中删除(大部分)重复的行。

如果每行两个单元格中的值相同,我可以判断该行是重复的。

这是一个例子:

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

任何关于我如何实现这一目标的想法将不胜感激!

PS 一切都在同一个工作表中。

标签: excelvba

解决方案


你正在尝试重新发明轮子。有一个现成的 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

推荐阅读