Try working from the bottom up, and you don't need the Select statement.
Sub x()
If Range("P2").Value <> "" Then
Range("P2", Range("P65536").End(xlUp)).Copy
Range("O2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End If
End Sub