Я собираюсь предположить, что скриншот - это ваша таблица данных, и два раскрывающихся списка для определения критериев находятся в другом месте.
Эта формула, заполненная с 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" на единицу меньше номера строки, где у вас есть формула.