Sub xyz()
Application.ScreenUpdating = False
Dim aNK(), aDK(), res(), TK$, tenSCT$, SDDK#, sdck$
Dim sR&, i&, eRow&, k&, fDay As Date, eDay As Date
With Sheets("NKC")
.AutoFilterMode = False
i = .Range("P" & .Rows.Count).End(3).Row
aNK = .Range("D11:P" & i).Value
.Range("A10:AA" & i).AutoFilter 1
End With
sR = UBound(aNK)
ReDim res(1 To sR, 1 To 10)
With Sheets("SCT")
fDay = .Range("C6"): eDay = .Range("C7")
TK = .Range("L5"): tenSCT = .Range("M5")
res(1, 5) = .Range("F10")
sdck = .Range("F" & .Rows.Count).End(3).Value ' "So du cuoi ky"
End With
With Sheets("CDPS")
aDK = .Range("C12", .Range("D" & .Rows.Count).End(3)).Value
End With
For i = 1 To UBound(aDK)
If aDK(i, 1) = TK Then
tenSCT = tenSCT & TK & " - " & aDK(i, 2)
Exit For
End If
Next i
For i = 1 To sR
If aNK(i, 1) < fDay Then
If aNK(i, 11) Like TK & "*" Then
SDDK = SDDK + aNK(i, 13)
ElseIf aNK(i, 12) Like TK & "*" Then
SDDK = SDDK - aNK(i, 13)
End If
Else
Exit For
End If
Next i
If SDDK > 0 Then res(1, 9) = SDDK Else res(1, 10) = -SDDK
k = 1
For i = i To sR
If aNK(i, 1) <= eDay Then
If aNK(i, 11) Like TK & "*" Or aNK(i, 12) Like TK & "*" Then
k = k + 1
res(k, 1) = aNK(i, 1): res(k, 2) = aNK(i, 4)
res(k, 3) = aNK(i, 2): res(k, 4) = aNK(i, 6)
res(k, 5) = aNK(i, 10)
If aNK(i, 11) Like TK & "*" Then
res(k, 6) = aNK(i, 12)
res(k, 7) = aNK(i, 13)
SDDK = SDDK + aNK(i, 13)
Else
res(k, 6) = aNK(i, 11)
res(k, 8) = aNK(i, 13)
SDDK = SDDK - aNK(i, 13)
End If
If SDDK > 0 Then res(k, 9) = SDDK Else res(k, 10) = -SDDK
End If
Else
Exit For
End If
Next i
k = k + 1
res(k, 5) = sdck
If SDDK > 0 Then res(k, 9) = SDDK Else res(k, 10) = -SDDK
With Sheets("SCT")
.Range("F5") = tenSCT
.Range("A10:K" & .Range("F" & .Rows.Count).End(3).Row).Clear
.Range("B10").Resize(k, 10) = res
.Range("H10").Resize(k, 4).NumberFormat = "#,###"
.Range("B10").Resize(k, 10).Borders.LineStyle = 1
End With
Application.ScreenUpdating = True
End Sub