I need to find a way to list valid 2nd column values from a 2 column range, by filtering using the first column in the the list. for example:

A Apple
A Aardvark
A Animal
B Banana
B Baboon
B Basketball
B Balloon
B Barium
C Carrot
C Cat
C Car
C Charity

On another sheet, on each row, a validated cell lists values from the second column whose first column matches the value from a cell in the same row

So a cell value of C would list only carrot, cat, car and charity in the drop-down.

I would have thought a formula like:
=IF(Sheet1!A1=Sheet2!A:A, Sheet2!B:B, "")
might work, but the data validation window doesn't like it. (and won't let me do array formula - ctrl+shift+enter or {...})

I can't re-arrange the look-up data and i'd like to avoid VBA if possible. (it will be added to, so will need to be dynamic and in reality there might be more columns)

Is there a way to automatically generate range names in this layout, then use indirect for the validation?

Much appreciated