Sub TaoSoCai()
Dim i As Long, endR As Long, s As Long, sSHTK As String
Dim ArrData(), MyDic As Object
Dim PSNo, PSCo
Dim TG As Double
TG = Timer
'PSNo = 0: PSCo = 0
With Sheets("Data")
endR = .Cells(65000, 1).End(xlUp).Row
ArrData = .Range("A12:H" & endR).Value
End With
Dim ArrSocai(1 To 65000, 1 To 7)
Set MyDic = CreateObject("scripting.dictionary")
With Sheets("SoCai")
sSHTK = CStr(.Range("F4"))
.Range("A12:H60000").ClearContents
End With
MyDic.Add sSHTK, ""
For i = 1 To UBound(ArrData)
If MyDic.Exists(CStr(ArrData(i, 6))) Then
s = s + 1
ArrSocai(s, 1) = ArrData(i, 1) 'Ngay GS
ArrSocai(s, 2) = ArrData(i, 2) 'So CT
ArrSocai(s, 3) = ArrData(i, 3) 'Ngay CT
ArrSocai(s, 4) = ArrData(i, 4) 'DienGiai
ArrSocai(s, 5) = ArrData(i, 7) 'TKDU
ArrSocai(s, 6) = ArrData(i, 8) 'PS No
PSNo = PSNo + ArrData(i, 8)
End If
If MyDic.Exists(CStr(ArrData(i, 7))) Then
s = s + 1
ArrSocai(s, 1) = ArrData(i, 1) 'Ngay GS
ArrSocai(s, 2) = ArrData(i, 2) 'So CT
ArrSocai(s, 3) = ArrData(i, 3) 'Ngay CT
ArrSocai(s, 4) = ArrData(i, 4) 'DienGiai
ArrSocai(s, 5) = ArrData(i, 6) 'TKDU
ArrSocai(s, 7) = ArrData(i, 8) ' PSCo
PSCo = PSCo + ArrData(i, 8)
End If
Next
With Sheets("socai").Range("A12")
.Resize(s, 7).Value = ArrSocai
With .Offset(s, 5)
.Value = PSNo
End With
With .Offset(s, 6)
.Value = PSCo
End With
With .Offset(, 5).Resize(s + 1, 2)
.NumberFormat = "#,##0"
End With
End With
Set MyDic = Nothing
Erase ArrData, ArrSocai
MsgBox Format(Timer - TG, "0.000000000") & " seconds"
End Sub