Я думаю, что вы хотите использовать функцию INDIRECT для поиска значения ячейки, а не определять диапазон поиска непосредственно в проверке данных. Взгляните на эту страницу , которая довольно хорошо это объясняет.
Имейте в виду, что подобные каскадные проверки имеют свои собственные проблемы. В основном, если вы сделаете второй (или третий и т. Д.) Выбор, а затем вернетесь и отредактируете первый выбор, автоматического флажка, указывающего на то, что выбор теперь может быть недействительным, нет. Например, если у вас есть следующее:
Type Detail
Fruit Apple
... а затем измените первый столбец:
Type Detail
Vegetable Apple
... тогда у вас сейчас может быть проблема. Поиск таких несоответствий может быть очень трудным или требует некоторого кода для выделения / исправления. В блоге DDoE показан один метод выделения таких ошибок с использованием условного форматирования, но это очень сложный расчет и плохо масштабируется.
Имейте в виду, что множественные поиски такого рода могут поставить книгу на колени, если они используются свободно, даже без использования условного форматирования.
В целом, для небольшого проекта, где ввод данных строго контролируется, это гибкий метод каскадных выпадающих списков, но если у вас мало контроля над пользователями или если объем собранных данных превысит несколько сотен строк тогда вы, вероятно, захотите взглянуть на валидацию (!) с помощью VBA или на прохождение всей процедуры и принудительное выполнение ввода через пользовательскую форму, что на данный момент является лучшим вариантом.
Редактировать: Пример рабочей книги
Снова отредактируйте: если данные обязательно должны оставаться такими, как есть, то потребуется расширенный фильтр, который создает именованные диапазоны, используемые при проверке. На этом уровне сложности вам, безусловно, будет лучше, если использовать форму для ввода данных.