Czyli UNIKATOWE, SORTUJ i FILTRUJ
Aby stworzyć zależną listę rozwijaną, trzeba było używać niezbyt prostych funkcji, np. PRZESUNIĘCIE. Opisywałam to już kiedyś na blogu (zobacz tutaj).
Teraz, gdy dla użytkowników subskrypcyjnej wersji Office’a (365) dostępne są dynamiczne formuły tablicowe – będzie to pestka!
Chodzi o coś takiego:
Będziemy chcieli z pierwszej listy rozwijanej wybierać markę samochodu, a z drugiej – model. Oczywiście będą nas interesowały modele tylko wybranej wcześniej marki.
Założenia
Zanim jednak takie cudo zrobimy, upewnijmy się, że spełniamy założenia:
- Odpowiednia tabela z danymi
- Office 365
Odpowiednia tabela z danymi, to taka tabela (może być też zwykły zakres), gdzie znajduje się przyporządkowanie modelu do marki. O tak:
U mnie, powyższa tabela nazywa się tbSamochody. Warto działać na tabeli, a nie na zwykłym zakresie, gdyż zyskujemy dodatkową, darmową dynamikę… J. Ale o tym trochę później.
Sama formatka z listami rozwijanymi to po prostu dowolne 2 komórki, w których umieścimy owe listy. Na przykład tak (komórki B5 i C5):
Ok, jak to mamy, to możemy przejść dalej.
Lista rozwijana – pierwszy poziom (marki)
Na pierwszej liście rozwijanej (tej niezależnej), potrzebujemy unikalne wpisy z pierwszej kolumny tabeli, którą nazwałam tbSamochody.
I to słowo – unikalne – jest słowem kluczem. Praktycznie tak samo nazywa się nowa funkcja tablicowa, która dokładnie to umie zrobić: wyświetla w swoim wyniku unikatowe wartości z wskazanego zakresu. Funkcja ta to UNIKATOWE.
Niestety, póki co (lipiec 2020), dynamiczna formuła tablicowa nie może być źródłem listy sprawdzania poprawności (Excel wtedy krzyczy, nawet nazwanie formuły nie pomaga), poradzimy sobie inaczej. Wpiszemy do roboczej komórki w arkuszu naszą formułę i na niej oprzemy listę rozwijaną.
Tak już Excel nam pozwoli zrobić ;).
Wpiszmy zatem do roboczej komórki B11 następującą formułę:
=UNIKATOWE(H4:H28)
Wystarczy ją po prostu zatwierdzić Enterem (a nie CSE, jak wcześniej zatwierdzaliśmy formuły tablicowe w Excelu!).
Pojawi się taki wynik:
Zauważ, że formuła się „rozlała” na 4 komórki, ponieważ tyle miejsca potrzebuje, aby wyświetlić unikalne marki samochodów z naszej listy.
Zauważ też, że formuła niejako „żyje” w pierwszej komórce wyniku, czyli w B11. Gdy ta komórka jest zaznaczona i spojrzymy na pasek formuły – kolor czcionki jest czarny. Jeśli zaś zaznaczymy choćby komórkę niżej – w pasku formuły zobaczymy tę samą formułę, ale napisana będzie już na szaro! Tam bowiem znajduje się jedynie tymczasowy wynik formuły! Tymczasowy, ponieważ dla innych danych możemy otrzymać inny wynik.
OK, formułę mamy, teraz pora na listę rozwijaną. Wstawmy ją do komórki B5 (Dane/ Poprawność danych).
W źródle listy rozwijanej odwołajmy się właśnie do komórki B11, w której nasza formuła żyje. A żeby lista rozwijana wiedziała, że chcemy wyświetlić całą tablicę, a nie tylko zawartość komórki B11 – dopiszmy za jej adresem znaczek #. O tak:
I to tyle. A o tworzeniu list rozwijanych (i walidacji i formancie formularza) sporo mówiłam TUTAJ i TUTAJ, więc pozwól, że już nie będę się powtarzać :).
Lista rozwijana – drugi poziom (modele)
Ok, teraz druga lista. Ta zależna od wyboru z pierwszej listy.
Wyobraź sobie, że w tabeli tbSamochody chcesz wyświetlić tylko modele Suzuki.
Co robisz?
Oczywiście: filtrujesz (hehe, jesteś w tabeli, więc autofiltr masz z automatu…)!
Jakie ustawiasz kryterium filtrowania?
Kryterium jest takie, że marka – Suzuki. Wtedy zobaczysz wybrane modele dla Suzuki.
No to już wszystko wiemy, zabierzmy się więc do funkcji FILTRUJ, która robi dokładnie to samo. Potrzebuje wiedzieć jakie dane ma przefiltrować i jakie kryteria ma brać pod uwagę. Kryteria to tak naprawdę tablica wartości PRAWDA i FAŁSZ, wskazujących na odpowiednie wiersze filtrowanej tabeli.
Dane do filtrowania będzie to kolumna z modelami, a kryteria to wyrażenie logiczne, porównujące całą kolumnę z markami do wartości, którą użytkownik wybrał na pierwszej liście, czyli komórki B5.
Formuła w C11 (również robocza), jest taka:
=FILTRUJ(I4:I28;H4:H28=B5)
Żeby jeszcze wyniki były ładnie posortowane – możemy wszystko wrzucić do funkcji SORTUJ, o tak:
=SORTUJ(FILTRUJ(I4:I28;H4:H28=B5))
Domyślnie sortuje ona rosnąco, a o to nam chodzi.
Wynik przedstawia poniższy obrazek:
Teraz pozostaje, tak samo jak poprzednio, wrzucić wynik do listy rozwijanej:
I to jest wszystko…
Nie trzeba sortować źródła!
… ale jeszcze nie wszystko, ponieważ warto dodać, że dzięki wspomnianym funkcjom: FILTRUJ, SORTUJ i UNIKATOWE – dane w tabeli źródłowej nie muszą być sortowane! Było to konieczne we wcześniejszych wersjach Excela (żeby formuła nie była z serii tych kosmicznych, i żeby nie było konieczności używania VBA).
Sprawdź sama – z nieposortowanych też zadziała :).
Dlaczego warto skorzystać z tabeli?
No i jeszcze jedno – wisienka na torcie ;). Jeśli dane źródłowe będą, tak jak u mnie w przykładzie, w obiekcie tabela – jak dopiszemy do niej nowe dane (kolejne marki czy modele) – nasze listy rozwijane to uwzględnią!!!
Zobacz:
Na koniec mam do Ciebie prośbę: pomożesz mi dotrzeć z tym artykułem do szerszego grona? Jeśli zechcesz udostępnić ten artykuł na Facebooku – będę Ci bardzo wdzięczna! Bardzo się starałam, aby ten artykuł był dla Ciebie na tyle wartościowy, by wart był wzmianki ;). Oczywiście śmiało podeślij go innym osobom mailem lub Messengerem. Będzie mi bardzo miło:)
Powiązane produkty
- O obiekcie tabela słów kilka – podczas tej lekcji pokazuję czym jest obiekt tabela w Excelu i dlaczego warto z niego korzystać. Daje nam on ogromne możliwości dynamizowania naszych arkuszy, a wiele nowych funkcjonalności Excela wręcz wymaga przechowywanie danych w tymże obiekcie (np. Power Query). Must have każdego użytkownika Excela!
- Listy rozwijane – podczas tej lekcji pokazuję jak zrobić listę rozwijaną zarówno taką, jak we wpisie (czyli sprawdzanie poprawności), jak i formant formularza, oraz jak je wykorzystać np. na wykresach.
- Walidacja danych – triki – podczas tej lekcji opowiadam o ciekawych zastosowaniach sprawdzania poprawności, którego lista rozwijana w komórce (użyta w tym wpisie) jest opcją. Ale narzędzie to potrafi dużo, duuuużo więcej!
- Power Query – wstęp dla laików – Celem tej lekcji jest wprowadzenie w magiczny świat Power Query wszystkich tych, którzy jeszcze nie mieli do czynienia z tym cudownym narzędziem. Coś tam kiedyś słyszeli, coś widzieli, ale jeszcze nic samodzielnie nie robili.
- Kurs Excel w codziennej pracy – mający na celu uporządkować Twoją wiedzę na temat Excela. Jest świetny zarówno dla osób, które chcą uporządkować swoją wiedzę, dobywaną do tej pory „po omacku”, jak i takich, które dopiero zaczynają swoją przygodę z Excelem.
MalinowyExcel Zależna lista rozwijana O365 dw.xlsx
I film na Youtubie, gdzie pokazuję powyższe rozwiązanie:
Witaj. Czy jest możliwość aby tabela rozwijała się o kolejne wartości np pojemność silnika.?
Tak, trzeba byłoby dodać tutaj kolejny poziom, czyli kolejną listę, tym razem opartą o dwa kryteria funkcji FILTR. Troszkę więcej kombinowania 🙂
dręczyło mnie od pewnego czasu jak ustawić inaczej tę tabelę. Chodziło mi o proste dopisywanie marek i modeli (u mnie czego innego), ale tak by było widać wyraźnie jakie modele w ramach marki. Kombinowałem i dopytywałem na grupie i udało się :-).
Na grupie zamieściłem zrzut ekranu z wynikiem końcowym.
Malino – dziękuję za ECP1 i ECP2 – bez uporządkowania wiedzy nie dałbym rady.
Witam,
A co jeśli chcę wprowadzić tą zależną formę pod tabele gdzie występuje kategoria i subkategoria ale nie zmieniam jedengo i tego samego wiersza tylko następne wiersze?
Tutaj niestety trzeba robić kolumny pomocnicze. Z tego co pamiętam Leila Gharani pokazywała to na swoim kanale na YT 🙂
Działa :)tylko jak to zrobić żeby przeciągnąć taką listę i żeby nadal działała?