условный выпадающий список значений кластера строк - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть следующая таблица:

Table

Есть ли способ иметь динамический c раскрывающийся список, включающий все значения только из одного кластер (пример возможных значений в колонке списка ссылок)? Столбец кластера большой, поэтому я ищу динамическое решение c.

1 Ответ

0 голосов
/ 09 апреля 2020

Так что вы можете сделать это с формулами, но это немного сложнее. Суть в том, что вот результат, который я придумал:

enter image description here

Раскрывающийся список был создан динамически с использованием динамических c именованных диапазонов и формул

Нам нужно начать с некоторых определений. Это мой тестовый лист и данные:

enter image description here

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

Вы должны определить четыре динамических c именованных диапазона следующим образом, которые соответствуют цветным областям на изображении выше:

enter image description here

Многие из этих формул массивы , поэтому вы должны быть осторожны, вводя их с помощью CTRL + SHIFT + ENTER .

Как только ваши области данных и имена определены, первая область для заполнения - UniqueClusterList (диапазон на листе F2:M2). Мы создаем список уникальных элементов на основе данных в столбце значений кластера. Поэтому вам нужна формула массива , которая идентифицирует все уникальные значения в диапазоне . В каждой ячейке диапазона введите формулу массива CTRL + SHIFT + ENTER для каждого:

Cell F2    =IFERROR(LOOKUP(2,1/(COUNTIF($E$2:E2,ClusterList)=0),ClusterList),"")
Cell G2    =IFERROR(LOOKUP(2,1/(COUNTIF($E$2:F2,ClusterList)=0),ClusterList),"")
Cell H2    =IFERROR(LOOKUP(2,1/(COUNTIF($E$2:G2,ClusterList)=0),ClusterList),"")
Cell I2    =IFERROR(LOOKUP(2,1/(COUNTIF($E$2:H2,ClusterList)=0),ClusterList),"")

... и так далее. Обратите внимание, что меняется только адрес ячейки в середине.

Далее нам нужно составить список идентификаторов для каждого уникального значения кластера. Это также формула массива. Начинается в ячейке F3 с CTRL + SHIFT + ENTER :

=IFERROR(INDEX(IDList, SMALL(IF(F$2=ClusterList, ROW(IDList)-2,""), ROW()-2)),"")

Затем используйте курсор для захвата автозаполнения значок в поле выбора этой ячейки и перетащите его вниз до ячейки F16. Поскольку теперь выделены ячейки F3:F16, перехватите значок автозаполнения и перетащите вправо, чтобы заполнить весь диапазон F2:M16. Все значения должны появиться в соответствии с формулами.

Ваш последний шаг - создать формулу поиска для раскрывающегося списка. Поэтому выберите ячейку C3, затем на ленте нажмите Данные -> Инструменты данных -> Проверка данных , чтобы открыть диалоговое окно. Теперь выберите Разрешить: Список и в поле Источник: введите следующую формулу:

 =OFFSET($F$2,1,MATCH(A3,UniqueClusterList,0)-1,SUMPRODUCT(COUNTIF(IDList,OFFSET($F$2,0,MATCH(A3,UniqueClusterList,0)-1,MAXUNIQUE,1))),1)

enter image description here

Теперь у вас будет раскрывающийся список в ячейке C3, который соответствует самому первому изображению выше. Перетащите значок выбора автозаполнения до ячейки C20, и все эти ячейки правильно рассчитают раскрывающийся список на основе доступных кластеров и идентификаторов.

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