As NetworkGuy said, a database is the ideal solution; however, a spreadsheet can be operated as a database by following good spreadsheet/database principles (a spreadsheet is in effect a flat file database).
It may be possible to use a single list - this would be the ideal solution as you only need to make one amendment (this is always my goal when designing a spreadsheet, and what it is good for - store data once, and refer to that data when it is needed):
I would recommend each row in the database represents a person - name, address, etc. and also membership of groups - have a column for each group with the group name at the top, and a simple indicator (like an 'X') in the column to indicate they are a member.
With either of these set ups, you can then use Autofilters to select the group (or groups) you are interested in and extract only that information.
One principle to follow that I referred to above: use a separate column for each piece of information; don't combine information that may need to be separated out. For example, don't store something as:
Name: Mr Joe Bloggs
Separate each bit out to give:
Title: Mr
FirstName: Joe
Surname: Bloggs
Same with address, have a column for Address1, Address2, Address3, Address4, PostCode, rather than one column for 'Address'.
If you want any help setting up a spreadsheet drop me a message, I'll give you my email address so you can send a sample file (without anyone's personal data, obviously) and I can put a structure together.