Option Explicit
Public Sub ChamCong()
On Error Resume Next
Dim sArr(), dArr(), I As Long, J As Long, K As Long, Col As Long, Tem As Long, Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("DATA")
sArr = .Range(.[A2], .[A65536].End(xlUp)).Resize(, 5).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 33)
For I = 1 To UBound(sArr, 1)
Tem = sArr(I, 1)
Col = Right(sArr(I, 3), 2) * 2 + 2
If Val(Left(sArr(I, 4), 2)) > 12 Then Col = Col + 1
[U]If Not Dic.Exists(Tem) Then[/U]
K = K + 1
Dic.Add Tem, K
dArr(K, 1) = K
dArr(K, 2) = sArr(I, 1)
dArr(K, 3) = sArr(I, 2)
End If
dArr(Dic.Item(Tem), Col) = sArr(I, 4)
Next I
Application.ScreenUpdating = False
With Sheets("ChamCong")
.[A5:A1000].Resize(, 33).ClearContents
.[A5:A1000].Resize(, 33).Borders.LineStyle = xlNone
If K Then
.[A5].Resize(K, 33) = dArr
.[A5].Resize(K, 33).Borders.LineStyle = xlContinuous
End If
End With
Application.ScreenUpdating = True
Set Dic = Nothing
End Sub