如何根据另一列的值删除重复行(在 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
上下文: 我有一个包含 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