ReDim TARR(1 To 165500, 1 To s1col + s2col)
Application.ScreenUpdating = False
dteStart = Timer
Sheets(3).Select
Rows("2:165500").ClearContents
Cells.Font.ColorIndex = 0
Set DIC = CreateObject("SCRIPTING.DICTIONARY")
Set DIC1 = CreateObject("SCRIPTING.DICTIONARY")
Rng = Sheets(1).[a1].CurrentRegion
For r = 2 To UBound(Rng)
Y = Trim(Rng(r, 2))
If DIC.EXISTS(Y) Then
DIC(Y) = DIC(Y) & "," & r
Else
DIC(Y) = r
End If
Next
Rng1 = Sheets(2).[a1].CurrentRegion
For r = 2 To UBound(Rng1)
Y = Trim(Rng1(r, 2))
If DIC1.EXISTS(Y) Then
DIC1(Y) = DIC1(Y) & "," & r
Else
DIC1(Y) = r
End If
Next
K = DIC.KEYS
t = DIC.ITEMS
For IV = 0 To DIC.Count - 1
Y = K(IV)
WW = Split(t(IV), ",")
For i = 0 To UBound(WW)
If DIC1.EXISTS(Y) Then
XX = Split(DIC1(Y), ",")
For II = 0 To UBound(XX)
TR = TR + 1
For qq = 1 To s1col
TARR(TR, qq) = Rng(WW(i), qq)
Next
For qq = s1col + 1 To s1col + s2col
TARR(TR, qq) = Rng1(XX(II), qq - s1col)
Next
If UBound(WW) 0 Then
Range("A" & TR + 1).Font.ColorIndex = 3
End If
If UBound(XX) 0 Then
Range("E" & TR + 1).Font.ColorIndex = 3
End If
Next II
Else
TR = TR + 1
For qq = 1 To s1col
TARR(TR, qq) = Rng(WW(i), qq)
Next
End If
Next i
If DIC1.EXISTS(Y) Then DIC1.Remove Y
Next
t = DIC1.ITEMS
For i = 0 To DIC1.Count - 1
XX = Split(t(i), ",")
For II = 0 To UBound(XX)
TR = TR + 1
For qq = s1col + 1 To s1col + s2col
TARR(TR, qq) = Rng1(XX(II), qq - s1col)
Next
Next II
Next i
[a2].Resize(TR, s1col + s2col) = TARR
Application.ScreenUpdating = True