Sub GPE()
Dim dArr As Variant, Arr As Variant
Dim i As Long, k As Long, ik As Long, iRow As Long
Dim key As String
i = Range("A" & Rows.Count).End(xlUp).Row
If i < 2 Then MsgBox ("khong co du lieu, khong loc"): Exit Sub
dArr = Range("A2:Y" & i).Value
ReDim Arr(1 To UBound(dArr), 1 To 6)
With CreateObject("scripting.dictionary")
For i = 1 To UBound(dArr)
key = dArr(i, 2) & "-" & dArr(i, 1) & "-" & dArr(i, 3)
If Not .exists(key) Then
k = k + 1
.Add key, Array(k, 0)
Arr(k, 1) = k: Arr(k, 2) = key
Arr(k, 3) = dArr(i, 5): Arr(k, 4) = dArr(i, 6)
Else
.Item(key) = Array(.Item(key)(0), i)
End If
Next i
For i = 1 To k
key = Arr(i, 2)
iRow = .Item(key)(1)
If iRow Then
ik = .Item(key)(0)
Arr(ik, 5) = dArr(iRow, 5): Arr(ik, 6) = dArr(iRow, 6)
End If
Next i
End With
i = Range("H" & Rows.Count).End(xlUp).Row
If i > 1 Then Range("H2:M" & i).ClearContents
Range("H2").Resize(k, 6) = Arr
End Sub