Public Sub GPE()
Dim Dic As Object, Dem As Object, sArr(), tArr(), dArr(), Tem As String, Tem2 As String
Dim I As Long, J As Long, K As Long, C As Long, N As Long, R As Long, Rws As Long
Set Dic = CreateObject("Scripting.Dictionary")
Set Dem = CreateObject("Scripting.Dictionary")
With Sheet1
C = .Range("A1").SpecialCells(xlLastCell).Column - 1
R = .Range("A1").SpecialCells(xlLastCell).Row
sArr = .Range("B5:B" & R).Resize(, C).Value
End With
ReDim tArr(1 To UBound(sArr), 1 To 2)
ReDim dArr(1 To UBound(sArr), 1 To 1)
For I = 1 To UBound(sArr)
If sArr(I, 1) <> Empty Then
Tem = sArr(I, 1)
If Not Dic.Exists(Tem) Then
K = K + 1: Dic.Add Tem, K
tArr(K, 1) = sArr(I, 1)
tArr(K, 2) = 1
End If
End If
Next I
For J = 2 To UBound(sArr, 2)
Dem.RemoveAll
For I = 1 To UBound(sArr)
If sArr(I, J) <> Empty Then
Tem = sArr(I, J)
If Dic.Exists(Tem) Then
If Not Dem.Exists(sArr(I, J)) Then
Dem.Add sArr(I, J), ""
Rws = Dic.Item(Tem)
tArr(Rws, 2) = tArr(Rws, 2) + 1
End If
End If
End If
Next I
Next J
For I = 1 To K
If tArr(I, 2) = C Then
N = N + 1
dArr(N, 1) = tArr(I, 1)
End If
Next I
With Sheet2
'.Range("E5").Resize(K, 2) = tArr' 'Chi de quan sat'
.Range("B5").Resize(N) = dArr
.Range("B5").Resize(N).Sort Key1:=.Range("B5")
End With
Set Dic = Nothing
Set Dem = Nothing
End Sub