Sub loc_duLieu()
Application.ScreenUpdating = False
Dim arr, i As Long, a As Long, b As Long, lr As Long, dic As Object, data, dk As String, ngay As Long, j As Integer, vao As Boolean, ra As Boolean
Set dic = CreateObject("scripting.dictionary")
With Sheets("bao_cao")
lr = .Range("B" & Rows.Count).End(xlUp).Row
If lr > 6 Then .Range("E7:Ai" & lr).ClearContents
arr = .Range("B5:Ai" & lr).Value
For i = 3 To UBound(arr)
dk = arr(i, 1)
dic.Item(dk) = i
Next i
For i = 4 To UBound(arr, 2)
ngay = arr(1, i)
dic.Item(ngay) = i
Next i
End With
With Sheets("dulieu")
i = .Range("C" & Rows.Count).End(xlUp).Row
data = .Range("A5:l" & i).Value
For i = 1 To UBound(data)
dk = data(i, 3)
a = dic.Item(dk)
If a Then
ngay = data(i, 1)
b = dic.Item(ngay)
If b Then
vao = False: ra = False
For j = 7 To 12
If data(i, j) <> Empty Then
If Hour(data(i, j)) < 9 Then
vao = True
Else
ra = True
End If
End If
Next j
If vao = False And ra = False Then
arr(a, b) = "V"
ElseIf vao = True And ra = False Then
arr(a, b) = "TR"
ElseIf vao = False And ra = True Then
arr(a, b) = "TV"
Else
arr(a, b) = "D"
End If
End If
End If
Next i
End With
With Sheets("bao_cao")
.Range("B5:Ai" & lr).Value = arr
End With
Application.ScreenUpdating = True
End Sub