Jak wygenerować listę w programie Excel na podstawie podanych kryteriów?

0

Próbuję zbudować coś w rodzaju pulpitu nawigacyjnego z kilkoma listami rozwijanymi, które przeszukałyby tabelę i dałyby mi listę na podstawie tego, co wybrałem. Proszę zobaczyć poniższą tabelę:

Przykład tabeli

Więc chcę, aby po wybraniu opcji „Niewymagane” z jednego menu rozwijanego i „Dokumentu 2” z drugiego, powinna wyświetlić mi listę wszystkich systemów spełniających te kryteria.

Byłbym wdzięczny za wszelką pomoc w tym zakresie!

Dzięki

Rav
źródło

Odpowiedzi:

1

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.

wprowadź opis zdjęcia tutaj

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$17zwraca tablicę TRUE/FALSEwartości z TRUEkażdą pozycją, w której komórka zawiera wybór w C$17menu rozwijanym.

ROW(A$1:A$12)daje tablicę kolejnych numerów {1;2;3;...12}, która jest podzielona przez TRUE/FALSEtablicę.

W operacji arytmetycznych z udziałem wartości logicznych TRUEi FALSEprzekształ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()-16zaczyna listę od 1. wiersza_licza w tablicy. Więc powinieneś zmienić ostatnie „16” na jeden mniej niż numer wiersza, w którym masz formułę.

Bandersnatch
źródło
Och, wow, nie spodziewałem się tak kompleksowej i szczegółowej odpowiedzi! Naprawdę doceniam to Bandersnatch! Spróbuję tego dzisiaj lub jutro i dam wam znać, jak sobie radzę. Jeszcze raz dziękuję zarówno za rozwiązanie, jak i za wyjaśnienie, jak to działa!
Rav
Przepraszam, że przeszkadzam, ale czy możesz prosić o udostępnienie utworzonego przeze mnie arkusza kalkulacyjnego?
Rav
Przesłałem to tutaj . Daj mi znać, jeśli to nie zadziała.
Bandersnatch
Nie klikaj przycisku „Otwórz”, który otwiera skoroszyt w Excel Online. Obok przycisku „Otwórz” znajdują się trzy kropki (...), a pod tym menu znajduje się „Pobierz”. Nie powinni być w tym tak cholernie skryci. :-)
Bandersnatch