Imagine I\'m writing a menu-planner in Excel for my kids (easier to describe than my actual problem) ...
I have a list of available foods: apples, bananas, carrots,
If you're prepared to rearrange your initial table then you can create a conditional in-cell dropdown validation list more easily, as follows:
You need to set up two tables, one for the data and one for the lookup.
Enter the kids' names in cells A1:D1.
Under each of these, enter the foods they like, one per cell, in B1:D6. You can leave blanks, as per the example above, or push them all up so some kids have shorter lists.
Then create a named range for each kid's choices - eg JohnsChoices, including only their choices, not their name as well.
These are the individual dropdown lists. Make them all the same size to allow for additions later.
Then create a lookup table which is 4 rows tall and 2 columns wide: John|JohnsChoices Karl|KarlsChoices Lina|LinasChoices Mary|MarysChoices
Then name this 4x2 table ChoiceLookup.
Then, name the cell where you want to select the name, eg Name.
In that same cell, create a dropdown validation list just for the names, ie using the left column of the table just created.
Finally, next to the Name cell, create a dropdown validation list and in the range put: =INDIRECT(VLOOKUP(Name,ChoiceLookup,2,FALSE))
This will identify the Name that has been selected first, and will then look up which choice list to use for the data validation dropdown list. The INDIRECT interprets the text string into a range, as per usual.
You can nest up to about 20 of these - if you have the patience, but in essence they are cascading choices that update subsequent options before you even get to them. I use this frequently and it is very useful, and avoids messing with MATCH, INDEX, OFFSET, etc
BTW: Almost any dialog box requiring a range can be filled with a formula so long as it resolves into a range, hence the INDIRECT.