Test this and report on speed please:If you want to change what's coloured and how, or want to remove it altogether, come back.Sub checkdifferences2() Dim LastRevRow As Long, LastAlphaRow As Long, i As Long, j As Long Dim RangeToUpdate As Range, SourceRng As Range, RevRngToColour As Range, AlphaRngToColour As Range LastRevRow = Sheets("Reversion").Cells(Rows.Count, "B").End(xlUp).Row LastAlphaRow = Sheets("Alpha").Cells(Rows.Count, "B").End(xlUp).Row Set RangeToUpdate = Sheets("Reversion").Range("F2:F" & LastRevRow) Set SourceRng = Sheets("Alpha").Range("F2:F" & LastAlphaRow) RevPO = Sheets("Reversion").Range("B2:B" & LastRevRow).Value AlphaPO = Sheets("Alpha").Range("B2:B" & LastAlphaRow).Value RevAD = RangeToUpdate.Value AlphaAD = SourceRng.Value For i = 1 To UBound(RevPO) For j = 1 To UBound(AlphaPO) If RevPO(i, 1) = AlphaPO(j, 1) And RevAD(i, 1) <> AlphaAD(j, 1) Then RevAD(i, 1) = AlphaAD(j, 1) If RevRngToColour Is Nothing Then Set RevRngToColour = RangeToUpdate.Cells(i) Else Set RevRngToColour = Union(RevRngToColour, RangeToUpdate.Cells(i)) If AlphaRngToColour Is Nothing Then Set AlphaRngToColour = SourceRng.Cells(j) Else Set AlphaRngToColour = Union(AlphaRngToColour, SourceRng.Cells(j)) End If Next j Next i If Not RevRngToColour Is Nothing Then RangeToUpdate.Value = RevAD RevRngToColour.Interior.Color = vbYellow AlphaRngToColour.Interior.Color = vbYellow End If End Sub