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

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

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

一种select是testingColumn A序列号中的每个项目,以确定该序列号的最高date/时间。 如果序列号的两个条目具有相同的确切date/时间,那么使用此方法时看到的唯一真实风险。 如果你认为这是可能性,你可以testing它,或者可能运行第二个循环来删除重复的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