Я наконец-то понял, как создать динамический каскадный набор списков в Excel, используя проверку данных и функцию INDIRECT. Тем не менее, я сталкиваюсь с проблемой.
Я хотел бы настроить свою электронную таблицу таким образом, чтобы при каждом изменении в списке проверки данных всем последующим спискам устанавливалось значение по умолчанию. Например:
Допустим, у меня есть List1, List2, List3 и List4. Значения каждого списка зависят от выбора, сделанного в списке перед ним. Когда я запускаю электронную таблицу, я хочу, чтобы все списки по умолчанию имели значение «ВСЕ». Когда пользователь выбирает значение в List1, List2 обновляется набором допустимых вариантов. Я хотел бы по умолчанию List2 для одного из этих вариантов. Однако, хотя я могу заставить List2 заполняться правильным набором опций выбора, я не могу получить желаемое значение по умолчанию, назначенное ему.
Точно так же, если пользователь делает выбор в List1, List2 и List3, затем возвращается и меняет List1, я бы хотел, чтобы List2-List4 по умолчанию вернулся к «ALL».
Как мне это сделать?
=IF(A1="List1",C1:C5,D1:D4)
. Я проверил это со значением ячейки A1, выбранной из списка, и она работает так, как вы ищете.Ответы:
Метод nonVBA, который я использую для этой проблемы, заключается в применении условного форматирования к последующим ячейкам, которое проверяет, соответствует ли текущее значение, которое оно содержит, значению в текущем диапазоне ссылок INDIRECT (). Если НЕТ, то ячейка становится красной или значение исчезает (соответствующий шрифт / фон), поэтому пользователь знает, что значение для этой ячейки должно быть обновлено / повторно выбрано.
Чтобы проиллюстрировать это (и метод VBA, упомянутый другими выше), здесь есть пример файла . Файл, который вы хотите, является DependentLists3.xls
источник