Private Sub Worksheet_Change(ByVal Target As Range)
If InStr(1, "$E$4,$E$5,$C$7", Target.Address) > 0 Then StockCard
End Sub
'-----------------------------------------
Sub StockCard()
Dim Tmp, Fil1, Fil2, Fil3, i, j, n
Dim Dk, Ps1, Ps2, Ck, Kq(1 To 1000, 1 To 7)
If Not IsDate([E4]) Or Not IsDate([E5]) Then
MsgBox "Sai ngay thang"
Exit Sub
End If
[G6:G9].ClearContents
[A13:G1000].ClearContents
Fil1 = [E4]: Fil2 = [E5]: Fil3 = [C7]
[G6] = Evaluate("Vlookup(" & Chr(34) & Fil3 & Chr(34) & ",LIST!A2:D1000,4,0)")
[C8] = Evaluate("Vlookup(" & Chr(34) & Fil3 & Chr(34) & ",LIST!A2:D1000,2,0)")
[C9] = Evaluate("Vlookup(" & Chr(34) & Fil3 & Chr(34) & ",LIST!A2:D1000,3,0)")
Dk = [G6]
Tmp = Sheet1.Range(Sheet1.[A2], Sheet1.[A65536].End(3)).Resize(, 11)
For i = 1 To UBound(Tmp, 1)
If Tmp(i, 1) >= Fil1 And Tmp(i, 1) <= Fil2 And Tmp(i, 7) = Fil3 Then
n = n + 1
For j = 1 To 6
Kq(n, j) = Tmp(i, IIf(j > 4, j + 5, j))
Next
Ps1 = Ps1 + Tmp(i, 10)
Ps2 = Ps2 + Tmp(i, 11)
Kq(n, 7) = Dk + Ps1 - Ps2
End If
Next
[A13:G1000] = Kq
[G7] = Ps1: [G8] = Ps2: [G9] = Dk + Ps1 - Ps2
End Sub