Я пытаюсь создать что-то вроде панели инструментов с несколькими раскрывающимися списками, которые будут искать таблицу и предоставлять мне список, основанный на том, что я выбрал. Пожалуйста, смотрите таблицу ниже:

Пример таблицы

Так что я хочу, чтобы, когда я выбирал «Не требуется» из одного выпадающего меню и «Документ 2» из другого, он должен был дать мне список всех Систем, соответствующих этому критерию.

Я был бы очень признателен за любую помощь в этом!

Спасибо

1 ответ1

1

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

Эта формула, заполненная с B17 в видео ниже, перечисляет системы, соответствующие критериям:=IFERROR(INDEX(A$2:A$13,AGGREGATE(15,6,ROW(A$1:A$12)/(INDEX(B$2:H$13,,MATCH(C$18,B$1:H$1))=C$17),ROW()-16)),"")

Это формула массива, и ее нужно вводить с помощью клавиши CTRL Shift Enter.

Надеюсь, это поможет, и удачи. ______________________________________________________________________________

Как это работает: Внутренний INDEX() возвращает весь столбец таблицы данных, выбранный с раскрывающимся списком "Doc" в C$18 . Тогда равенство =C$17 возвращает массив значений TRUE/FALSE с TRUE в каждой позиции, где ячейка содержит выбор в раскрывающемся списке C$17 .

ROW(A$1:A$12) дает массив последовательных чисел {1;2;3;...12} , который делится на массив TRUE/FALSE .

В арифметических операциях, включающих логические значения, TRUE и FALSE преобразуются в 1 и 0. Таким образом, деление дает массив #DIV/0! ошибки для каждого FALSE , чередующиеся с номерами строк каждого вхождения значения из выпадающего списка.

Этот массив передается в функцию AGGREGATE() которая выполняет те же действия, что и SMALL() (function = 15), за исключением того, что она имеет возможность игнорировать ошибки (option = 6). Так AGGREGATE() игнорирует #DIV/0! ошибки, и дает массив, содержащий только номера строк значений из выпадающего списка C $ 17, по мере заполнения функции. Этот массив используется в качестве номера row-num в другом INDEX() , который возвращает список систем, соответствующих этим номерам строки.

Наконец, IFERROR() вставляет пробел всякий раз, когда INDEX() выдает ошибку, так как он заполняется дальше, чем количество значений в его списке row_nums.

Я поместил эту формулу в строку 17, поэтому последний ROW()-16 начинает список с 1-го row_num в массиве. Таким образом, вы должны изменить последние "16" на единицу меньше номера строки, где у вас есть формула.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .