Public Sub NXT()
Dim Dic As Object, sArr(), dArr(), tArr(), I As Long, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Sheets("Chitiet").Range(Sheets("Chitiet").[B7], Sheets("Chitiet").[B7].End(xlDown)).Resize(, 7).Value
tArr = Sheets("DM").Range(Sheets("DM").[A5], Sheets("DM").[A5].End(xlDown)).Resize(, 4).Value
ReDim dArr(1 To UBound(tArr, 1), 1 To 3)
For I = 1 To UBound(tArr, 1)
Tem = UCase(tArr(I, 1))
If Not Dic.Exists(Tem) Then Dic.Add Tem, I
dArr(I, 3) = tArr(I, 4)
Next I
For I = 1 To UBound(sArr, 1)
Tem = UCase(sArr(I, 4))
If Dic.Exists(Tem) Then
If Left(sArr(I, 1), 2) = "PN" Then
dArr(Dic.Item(Tem), 1) = dArr(Dic.Item(Tem), 1) + sArr(I, 7)
dArr(Dic.Item(Tem), 3) = dArr(Dic.Item(Tem), 3) + sArr(I, 7)
Else
dArr(Dic.Item(Tem), 2) = dArr(Dic.Item(Tem), 2) + sArr(I, 7)
dArr(Dic.Item(Tem), 3) = dArr(Dic.Item(Tem), 3) - sArr(I, 7)
End If
End If
Next I
Sheets("DM").[E5].Resize(UBound(tArr, 1), 3).Value = dArr
Set Dic = Nothing
End Sub