• Zapisz się do newslettera, aby otrzymywać powiadomienia o nowościach na blogu
    Zapisując się, wyrażasz zgodę na przesyłanie Ci informacji o nowościach na tym blogu. Zgodę możesz w każdej chwili wycofać (szczegóły).

Zależna lista rozwijana: dynamiczne formuły tablicowe (Office 365)

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:

  1. Odpowiednia tabela z danymi
  2. 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:

Tabela danych

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):

Miejsce na obie listy rozwijane

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:

Dynamiczna formuła tablicowa funkcja UNIKATOWE

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:

MalinowyExcel Zależna lista rozwijana dynamiczne formuły tablicowe 365 Odwołanie do dynamicznej tablicy

Odwołanie do dynamicznej tablicy

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:

MalinowyExcel Zależna lista rozwijana dynamiczne formuły tablicowe 365 Wynik drugiej formuły

Wynik drugiej formuły

Teraz pozostaje, tak samo jak poprzednio, wrzucić wynik do listy rozwijanej:

MalinowyExcel Zależna lista rozwijana dynamiczne formuły tablicowe 365 Tworzenie zależnej listy rozwijanej

Tworzenie zależnej 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:

MalinowyExcel Zależna lista rozwijana dynamiczne formuły tablicowe 365 Dodatkowa dynamika dzięki tabeli

Dodatkowa dynamika dzięki tabeli

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.

 

Plik do pobrania:

MalinowyExcel Zależna lista rozwijana O365 dw.xlsx

 

I film na Youtubie, gdzie pokazuję powyższe rozwiązanie:

 

 

Spodobał Ci się ten artykuł?

Jeśli TAK, zapisz się na newsletter, aby otrzymywać powiadomienia
o o nowościach na blogu.

Zapisując się, wyrażasz zgodę na przesyłanie Ci informacji o nowościach na tym blogu. Zgodę możesz w każdej chwili wycofać (szczegóły).

Tagi , , , , , , , , , , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *