Having done this dozens of times, I don't envy you. I generally start by
importing the spreadsheet as is. If it doesn't import cleanly, I create a
table with the problem columns defined as text. Excel is very flexible as
to what data it allows in each cell but relational databases, due to their
nature, expect all data in each column to be of the same type. So if the
first 30 odd rows are valid dates, the Access import wizard will expect all
rows to contain dates and define the column as datetime. If some of the
rows contain "TBA" or some other non-date data, the import will generate
errors. The two ways to solve this are to modify the table definition
yourself and append to an existing table rather than creating a new table or
go into the spreadsheet and add a new first row of data with values that
indicate the type of datatype you want Access to define.
Once you have the whole spreadsheet imported, the fun begins. You now have
to analyze the data to determine what you have for sets. Take a customer
table for example. I would run a series of group by queries. Group by
Company name. Group by Company name and street address. Group by State.
Group by Customer type. This will help you find duplicates that are
slightly off. One name might have a coma before the LLC designation and
another might not or might have periods separating the letters - L.L.C.
Depending on the size of your recordset, you may be able to catch these
visually after the grouping or if the set is large enough, you might need to
create some fuzzy matching programs or buy commercially available products.
Once you have cleaned up the spreadsheet data and have some idea of what
your entities are, you need to start the load process. I take my Group by
company and address query and make that an append query to append new rows
to the company table. I then add a CompanyID column to the spreadsheet. I
run a query that joins the company table to the spreadsheet on all the
columns of the company table and I update the CompanyID in the spreadsheet
with the autonumber that was generated as the new CompanyID. That will end
up being the foreign key for the next level of data. And so on until it is
done.