Sub GPE1()
Dim Darr, arrNX(), arrDO(), arrCA(), arrCX(), arrNX_DO(), arrNX_CA(), arrNX_CX(), Dic As Object, Dic_Dic As Object
Dim i As Long, k As Long, nDO As Long, nCA As Long, nCX As Long, j As Integer
Set Dic = CreateObject("Scripting.Dictionary")
Darr = Sheets("CMS").Range("B1:M" & Sheets("CMS").Range("B2").End(xlDown).Row)
ReDim arrNX(1 To UBound(Darr), 1 To 6): ReDim arrDO(1 To UBound(Darr), 1 To 6)
ReDim arrCA(1 To UBound(Darr), 1 To 6): ReDim arrCX(1 To UBound(Darr), 1 To 6)
ReDim arrNX_DO(1 To UBound(Darr), 1 To 6): ReDim arrNX_CA(1 To UBound(Darr), 1 To 6)
ReDim arrNX_CX(1 To UBound(Darr), 1 To 6)
For j = 1 To 6
arrNX(1, j) = Darr(1, Choose(j, 1, 2, 7, 8, 11, 12))
arrDO(1, j) = arrNX(1, j): arrNX_DO(1, j) = arrNX(1, j)
arrCA(1, j) = arrNX(1, j): arrNX_CA(1, j) = arrNX(1, j)
arrCX(1, j) = arrNX(1, j): arrNX_CX(1, j) = arrNX(1, j)
Next j
k = 1: nDO = 1: nCA = 1: nCX = 1
For i = 2 To UBound(Darr)
If Darr(i, 8) = "NXLQ" Then
k = k + 1
For j = 1 To 6
arrNX(k, j) = Darr(i, Choose(j, 1, 2, 7, 8, 11, 12))
Next j
If Not Dic.Exists(arrNX(k, 1)) Then Dic.Add arrNX(k, 1), ""
End If
If Darr(i, 8) = "DORU" Then
nDO = nDO + 1
For j = 1 To 6
arrDO(nDO, j) = Darr(i, Choose(j, 1, 2, 7, 8, 11, 12))
Next j
End If
If Darr(i, 8) = "CAPR" Then
nCA = nCA + 1
For j = 1 To 6
arrCA(nCA, j) = Darr(i, Choose(j, 1, 2, 7, 8, 11, 12))
Next j
End If
If Darr(i, 8) = "CXLA" Then
nCX = nCX + 1
For j = 1 To 6
arrCX(nCX, j) = Darr(i, Choose(j, 1, 2, 7, 8, 11, 12))
Next j
End If
Next i
With Sheets("NXLQ")
.Range("A1:F" & .Range("A65500").End(xlUp).Row).ClearContents
.Range("A1").Resize(k + 1, 6) = arrNX
End With
With Sheets("DORU")
.Range("A1:F" & .Range("A65500").End(xlUp).Row).ClearContents
.Range("A1").Resize(nDO + 1, 6) = arrDO
End With
With Sheets("CAPR")
.Range("A1:F" & .Range("A65500").End(xlUp).Row).ClearContents
.Range("A1").Resize(nCA + 1, 6) = arrCA
End With
With Sheets("CXLA")
.Range("A1:F" & .Range("A65500").End(xlUp).Row).ClearContents
.Range("A1").Resize(nCX + 1, 6) = arrCX
End With
Set Dic_Dic = CreateObject("Scripting.Dictionary")
k = 1
For i = 2 To nDO
If Dic.Exists(arrDO(i, 1)) Then
If Not Dic_Dic.Exists(arrDO(i, 1)) Then
Dic_Dic.Add arrDO(i, 1), ""
k = k + 1
For j = 1 To 6
arrNX_DO(k, j) = arrDO(i, j)
Next j
End If
End If
Next i
With Sheets("NXLQ - DORU")
.Range("A1:F" & .Range("A65500").End(xlUp).Row).ClearContents
.Range("A1").Resize(k + 1, 6) = arrNX_DO
End With
k = 1
For i = 2 To nCA
If Dic.Exists(arrCA(i, 1)) Then
If Not Dic_Dic.Exists(arrCA(i, 1)) Then
Dic_Dic.Add arrCA(i, 1), ""
k = k + 1
For j = 1 To 6
arrNX_CA(k, j) = arrCA(i, j)
Next j
End If
End If
Next i
With Sheets("NXLQ - CAPR")
.Range("A1:F" & .Range("A65500").End(xlUp).Row).ClearContents
.Range("A1").Resize(k + 1, 6) = arrNX_CA
End With
k = 1
For i = 2 To nCX
If Dic.Exists(arrCX(i, 1)) Then
If Not Dic_Dic.Exists(arrCX(i, 1)) Then
Dic_Dic.Add arrCX(i, 1), ""
k = k + 1
For j = 1 To 6
arrNX_CX(k, j) = arrCX(i, j)
Next j
End If
End If
Next i
With Sheets("NXLQ - CXLA")
.Range("A1:F" & .Range("A65500").End(xlUp).Row).ClearContents
.Range("A1").Resize(k + 1, 6) = arrNX_CX
End With
Set Dic = Nothing
End Sub