Sub Tonghop()
Dim Solieu As Variant
Dim DK1(1 To 3) As Variant
Dim DK2(1 To 2) As Variant
Dim GHP As String
Dim MNG, GH
Dim KQ As Variant
Dim i As Long, Max_
Dim DicTH As Object
Set DicTH = CreateObject("Scripting.Dictionary")
Solieu = Sheet1.Range("a4", Sheet1.Range("d4").End(xlDown))
GH = DateSerial(2018, 8, 16) 'Thay doi gioi han loc tai day
For i = 1 To UBound(Solieu)
If Solieu(i, 4) >= GH Then
If IsError(Solieu(i, 2)) = False Then 'Loai tru loi tai dong nay
If Max_ < Solieu(i, 2) Then Max_ = Solieu(i, 2)
DK1(1) = Solieu(i, 2)
DK1(2) = Solieu(i, 3)
DK1(3) = Solieu(i, 1)
DK2(1) = Solieu(i, 2)
DK2(2) = Solieu(i, 3)
GHP = Join(DK1)
If DicTH.Exists(GHP) = False Then
DicTH(GHP) = Array(DK1, 1)
Else
MNG = DicTH(GHP)
MNG(1) = MNG(1) + 1
DicTH(GHP) = MNG
End If
GHP = Join(DK2)
DicTH(GHP) = DicTH(GHP) + 1
End If
End If
Next i
ReDim KQ(1 To Max_ + 1, 1 To 9)
KQ(1, 1) = "Don vi": KQ(1, 2) = "$": KQ(1, 3) = "@": KQ(1, 4) = "Nhan vien ban mat hang $ > 5"
KQ(1, 5) = "Nhan vien ban mat hang @ > 5": KQ(1, 6) = "Nhan vien ban mat hang $ < 3"
KQ(1, 7) = "Nhan vien ban mat hang @ < 3": KQ(1, 8) = "Nhan vien ban mat hang $ 3 <= SL <= 5"
KQ(1, 9) = "Nhan vien ban mat hang @ 3 <= Sl <= 5"
For i = 2 To Max_ + 1
KQ(i, 1) = i - 1
Next i
For i = 2 To UBound(KQ)
GHP = KQ(i, 1) & " " & "$"
KQ(i, 2) = DicTH(GHP)
DicTH.Remove GHP
GHP = KQ(i, 1) & " " & "@"
KQ(i, 3) = DicTH(GHP)
DicTH.Remove GHP
Next i
For i = 2 To UBound(KQ)
For Each MNG In DicTH.Keys
If DicTH(MNG)(0)(1) = KQ(i, 1) Then
If DicTH(MNG)(0)(2) = "$" Then
If DicTH(MNG)(1) > 5 Then
'KQ(i, 4) = KQ(i, 4) & " " & DicTH(MNG)(0)(3)
KQ(i, 4) = KQ(i, 4) + 1
DicTH.Remove MNG
Else
If DicTH(MNG)(1) < 3 Then
'KQ(i, 6) = KQ(i, 6) & " " & DicTH(MNG)(0)(3)
KQ(i, 6) = KQ(i, 6) + 1
DicTH.Remove MNG
Else
'KQ(i, 8) = KQ(i, 8) & " " & DicTH(MNG)(0)(3)
KQ(i, 8) = KQ(i, 8) + 1
DicTH.Remove MNG
End If
End If
Else
If DicTH(MNG)(1) > 5 Then
'KQ(i, 5) = KQ(i, 5) & " " & DicTH(MNG)(0)(3)
KQ(i, 5) = KQ(i, 5) + 1
DicTH.Remove MNG
Else
If DicTH(MNG)(1) < 3 Then
'KQ(i, 7) = KQ(i, 7) & " " & DicTH(MNG)(0)(3)
KQ(i, 7) = KQ(i, 7) + 1
DicTH.Remove MNG
Else
'KQ(i, 9) = KQ(i, 9) & " " & DicTH(MNG)(0)(3)
KQ(i, 9) = KQ(i, 9) + 1
DicTH.Remove MNG
End If
End If
End If
End If
Next MNG
Next i
With Sheet2
.UsedRange.ClearContents
.Range("a3").Resize(UBound(KQ), UBound(KQ, 2)) = KQ
.Range("a3").Resize(UBound(KQ), UBound(KQ, 2)).Borders.LineStyle = 1
.UsedRange.Columns.AutoFit
End With
End Sub