Обновление динамического выпадающего списка в Excel без VBA - PullRequest
0 голосов
/ 22 января 2019

Я хочу создать 2 зависимых раскрывающихся списка в Excel, первое раскрывающееся значение решает, какое значение должно отображаться для второго раскрывающегося списка.

Используется по формуле OFFSET для ввода вторых раскрывающихся значений для заполнениядинамически.

= СМЕЩЕНИЕ ($ B $ 2, МАТЧ ($ G $ 3, $ B $ 3: $ B $ 17,0), 1, COUNTIF ($ B $ 3: $ B $ 17, $ G $ 3), 1)

.Я также подготовил файл примера, демонстрирующий формулы, которые я использовал.

Когда я выбираю первое раскрывающееся значение, второй раскрывающийся список обновляется.НО, когда я выбираю другое значение в первом раскрывающемся списке, второй список не отображает значения сразу.

Пример ссылки на файл - https://drive.google.com/file/d/1rwt6B-INgrQ0NgxIl-Nc8JeoGziBaiL2/view?usp=sharing

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Теперь это то, что я называю сложным запросом.
Мы будем использовать секретную формулу Evaluate для достижения этой цели.

Отказ от ответственности:

  • Убедитесь, что статус никогда не будетотделитесь от своих коллег (например, не добавляйте еще один New в конце таблицы, вместо этого вставьте столбец, чтобы статусы оставались в пакетах).
  • Обратите внимание, что изменение статуса не очистит ячейку определения.Простой VBA сделает свое дело (и это единственное место, где вам понадобится VBA).

Решение:

  1. Давайте создадим формулукоторый возвращает адрес диапазона, который мы хотим использовать в раскрывающемся списке.Вы можете вставить это в I3.
    =ADDRESS(ROW(OFFSET($C$2,MATCH($G3,$B$3:$B$17,0),0)), COLUMN($C$2)) & ":" & ADDRESS(ROW(OFFSET($C$2,MATCH($G3,$B$3:$B$17,0)+COUNTIF($B$3:$B$17,$G3)-1,0)),COLUMN($C$2))
    Если я не ошибся с моим французским Excel, вы должны получить адрес всех определений статуса, который вы задали в G3.Расширьте формулу на несколько строк вниз, и вы увидите, что она всегда соответствует G4, G5 и т. Д.

  2. Время для определения имени (Формула меню> Менеджер имен> Новое), которое мывызовет DynamicRange.
    Во-первых, я бы порекомендовал сменить область действия на свой рабочий лист (выпадающий список в окне).
    Далее, поместите ту самую формулу, которую мы пробовали ранее, но в EVALUATE.
    =EVALUATE(ADDRESS(ROW(OFFSET($C$2,MATCH($G3,$B$3:$B$17,0),0)), COLUMN($C$2)) & ":" & ADDRESS(ROW(OFFSET($C$2,MATCH($G3,$B$3:$B$17,0)+COUNTIF($B$3:$B$17,$G3)-1,0)),COLUMN($C$2)))

Вот как это выглядит (за исключением того, что я все по-французски ...) New range created

Вернитесь к проверке данных и в источнике списка просто введите =DynamicRange

Список легко определить после успешного выполнения вышеописанного.Definition of the list

0 голосов
/ 22 января 2019

Я вижу, что вы пытаетесь выполнить (получите второе значение ячейки для автоматического обновления до первой записи списка), но я не думаю, что это возможно без использования VBA.

Насколько я понимаю, "«Проверка данных» только проверяет данные в ячейке, но не изменяет существующее значение.

Если вы хотите изменить существующее значение, я бы посмотрел на VBA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...