Zakładam, że zrzut ekranu jest twoją tabelą danych, a dwie listy rozwijane do określania kryteriów znajdują się gdzie indziej.
Ta formuła, wypełniona z B17 w poniższym filmie, zawiera listę systemów spełniających kryteria:
=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)),"")
Jest to formuła tablicowa i należy ją wprowadzić za pomocą CTRLShiftEnter.
Mam nadzieję, że to pomoże i powodzenia.
______________________________________________________________________________
Jak to działa: Wewnętrzna INDEX()
zwraca całą kolumnę tabeli danych wybraną z menu rozwijanego „Doc” w C$18
. Następnie równość =C$17
zwraca tablicę TRUE/FALSE
wartości z TRUE
każdą pozycją, w której komórka zawiera wybór w C$17
menu rozwijanym.
ROW(A$1:A$12)
daje tablicę kolejnych numerów {1;2;3;...12}
, która jest podzielona przez TRUE/FALSE
tablicę.
W operacji arytmetycznych z udziałem wartości logicznych TRUE
i FALSE
przekształca się do 1 i 0. Tak więc podział daje tablicę #DIV/0!
błędów dla każdego FALSE
, przeplataną numerami wierszy każdego wystąpienia wartości z listy rozwijanej.
Ta tablica jest dostarczana do AGGREGATE()
funkcji, która robi to samo, co SMALL()
by robiła (funkcja = 15), tyle że ma opcję ignorowania błędów (opcja = 6). AGGREGATE()
Ignoruje więc #DIV/0!
błędy i podaje tablicę zawierającą tylko numery wierszy wartości z listy rozwijanej C $ 17, gdy funkcja jest wypełniona. Ta tablica jest używana jako row-num
„s” w innej INDEX()
, która zwraca listę systemów odpowiadających tym numerom wierszy.
Na koniec IFERROR()
wstawia spację za każdym razem, gdy pojawia INDEX()
się błąd, ponieważ jest ona wypełniana dalej niż liczba wartości na liście liczba_wierszy.
Umieszczam tę formułę w wierszu 17, więc ostatni ROW()-16
zaczyna listę od 1. wiersza_licza w tablicy. Więc powinieneś zmienić ostatnie „16” na jeden mniej niż numer wiersza, w którym masz formułę.