How about:

Sub CaptureUniques()
    Dim col As Collection
    Set col = New Collection
    Dim rB As Range, rO As Range
    Set rB = Range(Range("B47"), Range("B47").End(xlDown))
    Set rO = Range("O24")
    For Each r In rB
        On Error Resume Next
        col.Add r.Value, CStr(r.Value)
        If Err.Number = 0 Then
            rO.Value = r.Value
            Set rO = rO.Offset(1, 0)
        End If
    Next r
End Sub