我有一个包含17列的Excel工作表(A列到S列)。列A包含ID号,列C是日期列,列F包含时间格式的值(hh:mm)。对于相同的日期/日,一些ID号在F列中包含两个值 - 通常是高数字(许多小时和分钟)和低数字(几分钟)。如果有这样的重复,我希望从工作表中删除包含F列中的低值的整行。
我尝试使用Excel的“板载”删除重复功能,但它没有做到这一点。然后我遇到了这段VBA代码,删除了包含最高值的整个重复行:
select "Device nr" from (select "Device nr", count(*) as OKcount from Table1
where (I1>19 and I2<11) and state="on"
group by "Device nr") where OKcount = 3
我不完全确定我理解这背后的逻辑,但我猜这可以作为一个起点(反转逻辑并添加一个新的限制(如果在同一天)。如果我改变了从上升到下降的订单,需要取最高值。但我不确定如何将额外的限制(日限制)放入。
THX!
答案 0 :(得分:0)
在这里,我的解决方法是:
Public Sub deleteDuplicate()
Dim row As Integer
'Set the start row
row = 2
With Sheets("sheetname")
'Loop until ID cell is blank
Do While .Range("A" & row) <> ""
innerRow = 1
'Re-loop until ID cell is blank for checking
Do While .Range("A" & innerRow) <> ""
'If ID and date are equal
If row <> innerRow And .Range("A" & row) = .Range("A" & innerRow) And .Range("C" & row) = .Range("C" & innerRow) Then
If .Range("F" & row) < .Range("F" & innerRow) Then
.Rows(row).Delete
row = row - 1
Exit Do
Else
.Rows(innerRow).Delete
End If
End If
'Increase inner looping row
innerRow = innerRow + 1
Loop
'Increase row
row = row + 1
Loop
End With
End Sub