For Dictionaries, have a read of this
Resize expands a range to a different area. In this case, from 1 cell to 3 cells horizontally.
Instead of Cells(i, 1).Resize(, 3) I might have used Range(Cells(i,1), Cells(i,3))
Range("A1").Resize(4,4) => Range("A14")
The # is used as a separator when joining cells to avoid accidental duplicates
eg join 123, 456, 789 =>123456789 : with separator 123#456#789
join 12, 345, 6789 =>123459789 : with separator 12#345#6789
Sub Test() Dim LRw As Long
Dim arr()
Dim dic1, dic2
Set dic1 = CreateObject("Scripting.Dictionary")
Set dic2 = CreateObject("Scripting.Dictionary")
LRw1 = Cells(Rows.Count, 1).End(xlUp).Row
'Add row number as key and concatenated cells as value; Area1
For i = 3 To LRw1
dic1.Add i, Cells(i, 1) & "#" & Cells(i, 2) & "#" & Cells(i, 3)
Next i
LRw2 = Cells(Rows.Count, 6).End(xlUp).Row
'Add row number as key and concatenated cells as value; Area2
For i = 3 To LRw2
dic2.Add i, Cells(i, 6) & "#" & Cells(i, 7) & "#" & Cells(i, 8)
Next i
'Loop through keys from last to first in Area1
For i = LRw1 To 3 Step -1
dup = False
For Each kk In dic2.keys
If dic1(i) = dic2(kk) Then
' If Dup found, clear Area2 cells
Cells(kk, 6).Resize(, 3).ClearContents
'Set flag value
dup = True
End If
Next kk
'If dup found, delete row from Area1
If dup Then Cells(i, 1).Resize(, 3).Delete shift:=xlUp
Next i
'Loop through Area2 from bottom and delete blank cells
For i = LRw2 To 3 Step -1
If Cells(i, 6) = "" Then Cells(i, 6).Resize(, 3).Delete shift:=xlUp
Next i
End Sub