如何根据另一列的值删除重复行(在 Excel 中)?

How can I remove duplicate rows (in Excel) based on another column's values?

上下文: 我有一个包含 N 行和 3 列的 Excel table:SerialNum、DeviceID 和 DateTime。 DeviceID 是唯一的(因为没有值会重复)。但是SerialNum和DeviceID之间可以存在1:N关系(所以同一个序列号可能有多个DeviceID)。我想删除重复的 SerialNum 值,以便每个 SerialNum 都有一个关联的 DeviceID。

问题: 麻烦的是,对于每组重复的序列号,我想保留DateTime值是最新的(换句话说,最新的)DeviceID。有办法吗?

一个选项是测试 Column A 中的每个项目,序列号,以确定该序列号的最高 Date/Time。如果一个序列号的两个条目具有完全相同的 date/time,那么我在使用此方法时看到的唯一真正风险。如果您认为这是可能的,您可以对其进行测试,或者可能 运行 第二个循环以根据您熟悉的规则删除重复的 SN。

查看下面的代码,让我知道它是否满足您的需求。

Sub RemoveDuplicateSerialNumbersUnlessSerialNumberIsMostRecentDateTimeValue_Dawg()
    Dim nLastRow As Long
    Dim dtMaxDateTime As Date
    Dim strFormula As String

    nLastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

    For i = nLastRow To 2 Step -1
        strFormula = "=MAX(IF(A2:A16=" & Cells(i, 1).Address & ",C2:C16))"
        dtMaxDateTime = Evaluate(strFormula)

        If Cells(i, 3).Value = dtMaxDateTime Then
            'Do Nothing Unless You Want TO
        Else
            Rows(i).Delete
        End If
    Next i

End Sub