Я припускаю, що на екрані екрана є ваша таблиця даних, а дві спадні програми для визначення критеріїв - деінде.
Ця формула, заповнена 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)),"")
Це формула масиву, і її потрібно вводити за допомогою CTRLShiftEnter.
Я сподіваюся, що це допомагає, і удачі.
______________________________________________________________________________
Як це працює: Внутрішній INDEX()
повертає цілий стовпчик таблиці даних, вибраний із спадним меню "Док" 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
's в іншому INDEX()
, який повертає список систем, що відповідають цим номерам рядків.
Нарешті, IFERROR()
вставляє пробіл кожного разу, коли INDEX()
виникає помилка, оскільки він заповнюється далі, ніж кількість значень у його списку row_nums.
Я ставлю цю формулу в рядок 17, тому останній ROW()-16
починає список з 1-го рядка_num у масиві. Тож вам слід змінити останній "16" на один менший, ніж номер рядка, де ви маєте формулу.