[COLOR=blue]Sub[/COLOR] a1015771d[B]()[/B]
[I][COLOR=seagreen]'sheet1 must be the activesheet[/COLOR][/I]
[COLOR=blue]Dim[/COLOR] n [COLOR=blue]As[/COLOR] [COLOR=blue]Long[/COLOR][B],[/B] m [COLOR=blue]As[/COLOR] [COLOR=blue]Long[/COLOR][B],[/B] i [COLOR=blue]As[/COLOR] [COLOR=blue]Long[/COLOR][B],[/B] k [COLOR=blue]As[/COLOR] [COLOR=blue]Long[/COLOR]
[COLOR=blue]Dim[/COLOR] pa[B],[/B] qa[B],[/B] za[B],[/B] zx
[COLOR=blue]Dim[/COLOR] NotCorrect [COLOR=blue]As[/COLOR] [COLOR=blue]Long[/COLOR]
Application.ScreenUpdating [B]=[/B] [COLOR=blue]False[/COLOR]
NotCorrect [B]=[/B] [B][COLOR=crimson]0[/COLOR][/B]
startTime [B]=[/B] Timer
n [B]=[/B] Cells[B]([/B]Rows.count[B],[/B] [COLOR=brown]"A"[/COLOR][B]).[/B][COLOR=blue]End[/COLOR][B]([/B]xlUp[B]).[/B]row
pa [B]=[/B] Range[B]([/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] Cells[B]([/B]n[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])).[/B]Value
[COLOR=blue]With[/COLOR] Sheets[B]([/B][COLOR=brown]"sheet2"[/COLOR][B])[/B]
m [B]=[/B] [B].[/B]Cells[B]([/B]Rows.count[B],[/B] [COLOR=brown]"A"[/COLOR][B]).[/B][COLOR=blue]End[/COLOR][B]([/B]xlUp[B]).[/B]row
qa [B]=[/B] [B].[/B]Range[B](.[/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B].[/B]Cells[B]([/B]m[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])).[/B]Value
[COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
[I][COLOR=seagreen]'sorting the range by col A in both sheets[/COLOR][/I]
Range[B]([/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] Cells[B]([/B]n[B],[/B] [B][COLOR=crimson]20[/COLOR][/B][B])).[/B]Sort key1[B]:=[/B]Range[B]([/B][COLOR=brown]"A3"[/COLOR][B]),[/B] order1[B]:=[/B]xlAscending[B],[/B] Header[B]:=[/B]xlNo
[COLOR=blue]With[/COLOR] Sheets[B]([/B][COLOR=brown]"sheet2"[/COLOR][B])[/B]
[B].[/B]Range[B](.[/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B].[/B]Cells[B]([/B]m[B],[/B] [B][COLOR=crimson]26[/COLOR][/B][B])).[/B]Sort key1[B]:=.[/B]Range[B]([/B][COLOR=brown]"A3"[/COLOR][B]),[/B] order1[B]:=[/B]xlAscending[B],[/B] Header[B]:=[/B]xlNo
[COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
[COLOR=blue]ReDim[/COLOR] za[B]([/B][B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] UBound[B]([/B]pa[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
[COLOR=blue]ReDim[/COLOR] zb[B]([/B][B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] UBound[B]([/B]qa[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
[COLOR=blue]Set[/COLOR] d1 [B]=[/B] CreateObject[B]([/B][COLOR=brown]"scripting.dictionary"[/COLOR][B])[/B]
[COLOR=blue]For[/COLOR] [COLOR=blue]Each[/COLOR] x [COLOR=blue]In[/COLOR] pa
d1[B]([/B]x[B])[/B] [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B]
[COLOR=blue]Next[/COLOR]
[COLOR=blue]Set[/COLOR] d2 [B]=[/B] CreateObject[B]([/B][COLOR=brown]"scripting.dictionary"[/COLOR][B])[/B]
[COLOR=blue]For[/COLOR] [COLOR=blue]Each[/COLOR] x [COLOR=blue]In[/COLOR] qa
d2[B]([/B]x[B])[/B] [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B]
[COLOR=blue]Next[/COLOR]
[COLOR=blue]Set[/COLOR] d3 [B]=[/B] CreateObject[B]([/B][COLOR=brown]"scripting.dictionary"[/COLOR][B])[/B]
[COLOR=blue]For[/COLOR] [COLOR=blue]Each[/COLOR] x [COLOR=blue]In[/COLOR] d1
[COLOR=blue]If[/COLOR] d2.Exists[B]([/B]x[B])[/B] [COLOR=blue]Then[/COLOR]
d3[B]([/B]x[B])[/B] [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B]
[COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR]
[COLOR=blue]Next[/COLOR]
[COLOR=blue]If[/COLOR] d3.Exists[B]([/B][COLOR=brown]""[/COLOR][B])[/B] [COLOR=blue]Then[/COLOR] d3.Remove [COLOR=brown]""[/COLOR]
[COLOR=blue]For[/COLOR] i [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] UBound[B]([/B]pa[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
[COLOR=blue]If[/COLOR] d3.Exists[B]([/B]pa[B]([/B]i[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]))[/B] [COLOR=blue]Then[/COLOR] za[B]([/B]i[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B] [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B]
[COLOR=blue]Next[/COLOR]
[COLOR=blue]For[/COLOR] i [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] UBound[B]([/B]qa[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
[COLOR=blue]If[/COLOR] d3.Exists[B]([/B]qa[B]([/B]i[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]))[/B] [COLOR=blue]Then[/COLOR] zb[B]([/B]i[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B] [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B]
[COLOR=blue]Next[/COLOR]
[I][COLOR=seagreen]'put the result in helper column Z[/COLOR][/I]
Range[B]([/B][COLOR=brown]"Z3"[/COLOR][B]).[/B]Resize[B]([/B]UBound[B]([/B]za[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B] [B]=[/B] za
Range[B]([/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] Cells[B]([/B]n[B],[/B] [B][COLOR=crimson]26[/COLOR][/B][B])).[/B]Sort key1[B]:=[/B]Range[B]([/B][COLOR=brown]"Z3"[/COLOR][B]),[/B] order1[B]:=[/B]xlAscending[B],[/B] Header[B]:=[/B]xlNo
ra [B]=[/B] Range[B]([/B][COLOR=brown]"Z:Z"[/COLOR][B]).[/B]Find[B]([/B][COLOR=brown]"*"[/COLOR][B],[/B] SearchOrder[B]:=[/B]xlByRows[B],[/B] SearchDirection[B]:=[/B]xlPrevious[B]).[/B]row
Range[B]([/B]Cells[B]([/B]ra [B]+[/B] [B][COLOR=crimson]1[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] Cells[B]([/B]n[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])).[/B]Interior.Color [B]=[/B] vbYellow
pa [B]=[/B] Range[B]([/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] Cells[B]([/B]ra[B],[/B] [B][COLOR=crimson]20[/COLOR][/B][B])).[/B]Value
[COLOR=blue]With[/COLOR] Sheets[B]([/B][COLOR=brown]"sheet2"[/COLOR][B])[/B]
[B].[/B]Range[B]([/B][COLOR=brown]"Z3"[/COLOR][B]).[/B]Resize[B]([/B]UBound[B]([/B]zb[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B] [B]=[/B] zb
[B].[/B]Range[B](.[/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B].[/B]Cells[B]([/B]m[B],[/B] [B][COLOR=crimson]26[/COLOR][/B][B])).[/B]Sort key1[B]:=.[/B]Range[B]([/B][COLOR=brown]"Z3"[/COLOR][B]),[/B] order1[B]:=[/B]xlAscending[B],[/B] Header[B]:=[/B]xlNo
rb [B]=[/B] [B].[/B]Range[B]([/B][COLOR=brown]"Z:Z"[/COLOR][B]).[/B]Find[B]([/B][COLOR=brown]"*"[/COLOR][B],[/B] SearchOrder[B]:=[/B]xlByRows[B],[/B] SearchDirection[B]:=[/B]xlPrevious[B]).[/B]row
qa [B]=[/B] [B].[/B]Range[B](.[/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B].[/B]Cells[B]([/B]rb[B],[/B] [B][COLOR=crimson]20[/COLOR][/B][B])).[/B]Value
[COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
[COLOR=blue]ReDim[/COLOR] zx[B]([/B][B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] UBound[B]([/B]pa[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
[COLOR=blue]For[/COLOR] i [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] UBound[B]([/B]pa[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
[COLOR=blue]For[/COLOR] k [B]=[/B] [B][COLOR=crimson]2[/COLOR][/B] [COLOR=blue]To[/COLOR] [B][COLOR=crimson]20[/COLOR][/B]
[COLOR=blue]If[/COLOR] pa[B]([/B]i[B],[/B] k[B])[/B] [B]<>[/B] qa[B]([/B]i[B],[/B] k[B])[/B] [COLOR=blue]Then[/COLOR]
zx[B]([/B]i[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B] [B]=[/B] [COLOR=brown]"G"[/COLOR]
[COLOR=blue]Exit[/COLOR] [COLOR=blue]For[/COLOR]
[COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR]
[COLOR=blue]Next[/COLOR]
[COLOR=blue]Next[/COLOR]
Range[B]([/B][COLOR=brown]"Z3"[/COLOR][B]).[/B]Resize[B]([/B]UBound[B]([/B]zx[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B] [B]=[/B] zx
[COLOR=blue]With[/COLOR] Range[B]([/B][COLOR=brown]"Z3"[/COLOR][B]).[/B]Resize[B]([/B]UBound[B]([/B]zx[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
Application.ReplaceFormat.Interior.Color [B]=[/B] vbGreen
[B].[/B]Replace What[B]:=[/B][COLOR=brown]"G"[/COLOR][B],[/B] Replacement[B]:=[/B][COLOR=brown]""[/COLOR][B],[/B] lookat[B]:=[/B]xlWhole[B],[/B] _
searchFormat[B]:=[/B][COLOR=blue]False[/COLOR][B],[/B] ReplaceFormat[B]:=[/B][COLOR=blue]True[/COLOR]
[B].[/B]Copy
[COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
Range[B]([/B][COLOR=brown]"A3"[/COLOR][B]).[/B]PasteSpecial paste[B]:=[/B]xlPasteFormats
Columns[B]([/B][COLOR=brown]"Z"[/COLOR][B]).[/B]Delete
Range[B]([/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] Cells[B]([/B]n[B],[/B] [B][COLOR=crimson]20[/COLOR][/B][B])).[/B]Sort key1[B]:=[/B]Range[B]([/B][COLOR=brown]"A3"[/COLOR][B]),[/B] order1[B]:=[/B]xlAscending[B],[/B] Header[B]:=[/B]xlNo
[COLOR=blue]With[/COLOR] Sheets[B]([/B][COLOR=brown]"sheet2"[/COLOR][B])[/B]
[B].[/B]Range[B](.[/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B].[/B]Cells[B]([/B]m[B],[/B] [B][COLOR=crimson]26[/COLOR][/B][B])).[/B]Sort key1[B]:=.[/B]Range[B]([/B][COLOR=brown]"A3"[/COLOR][B]),[/B] order1[B]:=[/B]xlAscending[B],[/B] Header[B]:=[/B]xlNo
[COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
Application.ScreenUpdating [B]=[/B] [COLOR=blue]True[/COLOR]
EndTime [B]=[/B] Timer
MsgBox [COLOR=brown]"Total Time: "[/COLOR] [B]&[/B] EndTime [B]-[/B] startTime [B]&[/B] vbLf [B]&[/B] _
[COLOR=brown]"NotCorrect: "[/COLOR] [B]&[/B] str[B]([/B]NotCorrect[B])[/B]
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR]