
Gửi bởi
phihndhsp
Cái này dùng VBA để làm tự động thì hay hơn nhiều, sử dụng DIC lấy duy nhất, song song đó thì cộng dồn tổng tiền của từng người. Hiện tại tôi đang check bằng đt nên chỉ cho bạn hướng làm như vậy. Đề tài này chắc chắn sẽ có người giúp bạn
Ngứa tay làm đại cho bạn, tôi chưa có bẫy lỗi gì nhiều, bạn có thể tự phát triển thêm
Mã:
Sub GPE()
Dim Arr(), i As Long
Dim Rng As Range
Dim Dic As Object
Dim LastR As Long
Dim K As Long
Dim R As Long
Dim Thang As Long
Dim TenNV
Thang = Sheet1.Range("H1").Value
TenNV = Sheet1.Range("H2").Value
Set Dic = CreateObject("Scripting.Dictionary")
LastR = Sheet1.Range("A65000").End(xlUp).Row
Set Rng = Sheet1.Range("A2:D" & LastR)
ReDim Arr(1 To LastR - 1, 1 To 2)
K = 0
For i = 1 To UBound(Arr)
If ((Month(Rng(i, 1).Value) = Thang) And (Rng(i, 4).Value = TenNV)) Then
If Not Dic.exists(Rng(i, 2).Value) Then
K = K + 1
Dic.Add Rng(i, 2).Value, K
Arr(K, 1) = Rng(i, 2)
Arr(K, 2) = Rng(i, 3)
Else
R = Dic.Item(Rng(i, 2).Value)
Arr(R, 2) = Arr(R, 2) + Rng(i, 3)
End If
End If
Next
Sheet1.Range("G5:H10000").Clear
If (K > 0) Then
Sheet1.Range("G5").Resize(K, 2).Value = Arr
Sheet1.Range("G5").Resize(K, 2).Borders.LineStyle = 1
End If
End Sub