Preparing data for CiviCRM import can be a time-consuming, frustrating, and traumatic experience. But it is a job that has to be done. CiviCRM does an enormous amount of error checking on data import and will not import records with errors it spots.
Consider this data:
Here you can see that there are data inconsistencies in the center column. The town Poulton-le-Fylde has five different ways of spelling and presenting the data. This is quite a common problem in legacy systems that were designed to hold addressing data for label printing rather than for searching or geocoding. Another common problem is having data in the wrong columns. Towns, cities, and postcodes are often spread across many columns. The result is you cannot guarantee accurate search results or do any geocoding.