Public Sub CleanColB()
Dim i As Long, _
rng As Range, _
LR As Long
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
LR = Range("B" & Rows.Count).End(xlUp).Row
For i = LR To 2 Step -1
Set rng = Range("B1:B" & i - 1).Find(Range("B" & i).Value, LookIn:=xlValues, searchdirection:=xlPrevious)
If Not rng Is Nothing Then
Rows(i).Delete Shift:=xlUp
rng.EntireRow.Delete Shift:=xlUp
End If
Next i
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub