1

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

问题:问题在于,对于每组重复的序列号,我想保留 DateTime 值为最新(即最新)的 DeviceID。有没有办法做到这一点?

4

1 回答 1

1

一种选择是测试序列号中的每个项目Column A,以确定该序列号的最高日期/时间。如果序列号的两个条目具有相同的确切日期/时间,我在使用此方法时看到的唯一真正风险。如果您认为这是一种可能性,您可以对其进行测试,或者可能运行第二个循环以根据您熟悉的规则删除重复的 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
于 2015-02-13T20:38:51.693 回答