>> "Error converting data type varchar to numeric."
What is the data type for your column Areas ? From the error it looks like it is integer.
If it is integer, you don't have to use replace().
SET @SQL = @SQL + ' WHERE Areas IN (' + @p1 + ')'
-----------------
'KH'
Selamat Hari Raya Haji