如下圖
我想把紅色的資料依條件做刪除,整理完後會變成黃色的資料那樣。
條件是,只要針對類別1來做處理,相同姓名的如果結束時間不超過08:03後的筆數(包含08:03)。就要刪除前二筆資料。第3筆後都要保留。如果是過08:03的,全數保留。
想用vba來完成,請問該怎麼實現呢?
自己改改
Sub cfz()
Set d = CreateObject("Scripting.Dictionary")
Arr = Range("a2:c" & [a1048576].End(xlUp).Row)
For i = 1 To UBound(Arr)
d(Arr(i, 1)) = d(Arr(i, 1)) + 1
Next
k = d.keys
t = d.items
For Each info In k
x = 1
For i = 2 To [a1048576].End(xlUp).Row
If Cells(i, "a") = info And Cells(i, "b") = 1 Then
If x < 3 And TimeValue(Cells(i, "c")) > "8:03:00" Then
[e1048576].End(xlUp).Offset(1, 0).Resize(1, 3) = Application.Index(Arr, i - 1)
ElseIf TimeValue(Cells(i, "c")) > "8:03:00" Then
[e1048576].End(xlUp).Offset(1, 0).Resize(1, 3) = Application.Index(Arr, i - 1)
ElseIf x > 2 Then
[e1048576].End(xlUp).Offset(1, 0).Resize(1, 3) = Application.Index(Arr, i - 1)
Else
x = x + 1
End If
ElseIf Cells(i, "a") = info And Cells(i, "b") = 2 Then
[e1048576].End(xlUp).Offset(1, 0).Resize(1, 3) = Application.Index(Arr, i - 1)
End If
DoEvents
Next
Next
End Sub
寫好了
原始資料
執行 VBA
執行結果