Jak zrobić zależną (kaskadową) listę rozwijaną w Excelu

  • Udostępnij To
Michael Brown

Jakiś czas temu zaczęliśmy poznawać możliwości Walidacji Danych w Excelu i dowiedzieliśmy się jak stworzyć prostą listę rozwijaną w Excelu na podstawie listy rozdzielonej przecinkami, zakresu komórek lub nazwanego zakresu.

Dziś zbadamy tę funkcję dogłębnie i dowiemy się, jak tworzyć kaskadowe listy rozwijane, które wyświetlają wybory w zależności od wartości wybranej w pierwszej liście rozwijanej. Mówiąc inaczej, stworzymy listę sprawdzania poprawności danych w Excelu na podstawie wartości innej listy.

    Jak utworzyć wielokrotne zależne rozwijanie w programie Excel

    Tworzenie wielopoziomowych zależnych list rozwijanych w Excelu jest proste. Wszystko, czego potrzebujesz, to kilka nazwanych zakresów i formuła INDIRECT. Ta metoda działa ze wszystkimi wersjami programu Excel 365 - 2010 i wcześniejszymi.

    1. wpisz pozycje dla list rozwijanych

    Najpierw wpisz wpisy, które chcesz, aby pojawiły się na listach rozwijanych, każda lista w osobnej kolumnie. Na przykład tworzę kaskadowe rozwijanie eksporterów owoców i kolumnę A mojego arkusza źródłowego ( Owoce ) zawiera pozycje pierwszego dropdownu, a 3 pozostałe kolumny wyszczególniają pozycje dla dropdownów zależnych.

    2. utworzyć nazwane zakresy

    Teraz musisz utworzyć nazwy dla swojej głównej listy oraz dla każdej z list zależnych. Możesz to zrobić dodając nową nazwę w Nazwa Kierownik okno ( Formuły tab> Name Manager> New) lub wpisując nazwę bezpośrednio w Nazwa Pole .

    Uwaga. Zwróć uwagę, że jeśli pierwszy wiersz jest rodzajem nagłówka kolumny, jak widać na powyższym zrzucie ekranu, nie należy go uwzględniać w nazwanym zakresie.

    Szczegółowa instrukcja krok po kroku znajduje się na stronie Jak zdefiniować nazwę w Excelu.

    Rzeczy do zapamiętania:

    1. Pozycje, które mają pojawić się na pierwszej liście rozwijanej muszą być wpisami jednowyrazowymi, np. Morela , Mango , Pomarańcze Jeśli masz elementy składające się z dwóch, trzech lub więcej słów, zobacz Jak utworzyć kaskadowe rozwijanie z wpisami wielosłownymi.
    2. Nazwy list zależnych muszą być dokładnie takie same jak pasująca do nich pozycja na liście głównej. Na przykład lista zależna, która ma być wyświetlona, gdy " Mango " jest wybierany z pierwszej listy rozwijanej powinien mieć nazwę Mango .

    Po zakończeniu możesz nacisnąć Ctrl+F3, aby otworzyć Nazwa Kierownik okno i sprawdzić, czy wszystkie listy mają poprawne nazwiska i referencje.

    3. utwórz pierwszą (główną) listę rozwijaną

    1. W tym samym lub w innym arkuszu kalkulacyjnym zaznacz komórkę lub kilka komórek, w których ma się pojawić podstawowa lista rozwijana.
    2. Idź do Dane zakładka, kliknij Walidacja danych i skonfigurować listę rozwijaną na podstawie nazwanego zakresu w zwykły sposób, wybierając Wykaz pod adresem Pozwól i wpisanie nazwy zakresu w polu Źródło pudełko.

    Szczegółowe kroki znajdziesz w części Tworzenie listy rozwijanej na podstawie nazwanego zakresu.

    W rezultacie w swoim arkuszu będziesz miał rozwijane menu podobne do tego:

    4. utwórz listę rozwijaną zależną

    Wybierz komórkę (komórki) dla swojego zależnego menu rozwijanego i ponownie zastosuj Walidację Danych Excela w sposób opisany w poprzednim kroku. Tym razem jednak zamiast nazwy zakresu wpiszesz w polu Źródło pole:

    =INDIRECT(A2)

    Gdzie A2 to komórka z Twoją pierwszą (podstawową) listą rozwijaną.

    Jeśli komórka A2 jest obecnie pusta, otrzymasz komunikat o błędzie " Źródło jest obecnie oceniane jako błąd. Czy chcesz kontynuować? "

    Bezpiecznie kliknij Tak , a gdy tylko wybierzesz pozycję z pierwszego rozwijanego menu, zobaczysz odpowiadające jej wpisy w drugiej, zależnej, rozwijanej liście.

    5. dodaj trzecią zależną listę rozwijaną (opcjonalnie)

    W razie potrzeby można dodać 3. kaskadową listę rozwijaną, która zależy od wyboru w 2. menu rozwijanym lub od wyboru w pierwszych dwóch rozwijanych listach.

    Skonfiguruj 3. listę rozwijaną, która zależy od 2. listy

    Listę rozwijaną tego typu możesz wykonać w taki sam sposób, jak przed chwilą wykonaliśmy drugie zależne menu rozwijane. Pamiętaj tylko o 2 ważnych rzeczach omówionych powyżej, które są niezbędne do prawidłowej pracy Twoich kaskadowych list rozwijanych.

    Na przykład, jeśli chcesz wyświetlić listę regionów w kolumnie C w zależności od tego, który kraj jest wybrany w kolumnie B, tworzysz listę regionów dla każdego kraju i nazywasz ją po nazwie kraju, dokładnie tak, jak kraj pojawia się w drugich listach rozwijanych. Na przykład lista regionów Indii powinna mieć nazwę "Indie", lista regionów Chin - "Chiny", i tak dalej.

    Następnie wybieramy komórkę dla trzeciego dropdownu (w naszym przypadku C2) i stosujemy walidację danych w Excelu za pomocą poniższej formuły (B2 to komórka z drugim menu rozwijanym, które zawiera listę krajów):

    =INDIRECT(B2)

    Teraz, za każdym razem, gdy wybierzesz Indie pod listą krajów w kolumnie B, w trzecim rozwijanym oknie będziesz miał do wyboru następujące opcje:

    Uwaga. Wyświetlana lista regionów jest unikalna dla każdego kraju, ale nie zależy od wyboru z pierwszej listy rozwijanej.

    Utwórz trzecią listę rozwijaną zależną od dwóch pierwszych list

    Jeśli potrzebujesz stworzyć kaskadowe menu rozwijane, które zależy od wyborów zarówno na pierwszej, jak i drugiej liście rozwijanej, to postępuj w ten sposób:

    1. Utwórz dodatkowe zestawy nazwanych zakresów i nazwij je dla kombinacji słów w twoich pierwszych dwóch rozwijanych listach. Na przykład, masz Mango, pomarańcze itp. na pierwszej liście i Indie, Brazylia itp. w 2. Następnie tworzysz nazwane zakresy MangoIndie , MangoBrazil , PomarańczeIndie , PomarańczeBrazil , itd. Nazwy te nie powinny zawierać podkreślników ani żadnych innych dodatkowych znaków.

  • Zastosuj w Excelu walidację danych za pomocą formuły INDIRECT SUBSTITUTE, która łączy nazwy wpisów w dwóch pierwszych kolumnach i usuwa spacje z nazw. Na przykład w komórce C2 formuła walidacji danych miałaby postać:
  • =INDIRECT(SUBSTITUTE(A2&B2," ","))

    Gdzie A2 i B2 zawierają odpowiednio pierwszy i drugi dropdown.

    W rezultacie na 3. liście rozwijanej zostaną wyświetlone regiony odpowiadające Owoce oraz Kraj wybrane na pierwszych 2 listach rozwijanych.

    Jest to najprostszy sposób tworzenia kaskadowych pól rozwijanych w Excelu, jednak metoda ta ma szereg ograniczeń.

    Ograniczenia tego podejścia:

    1. Elementy na podstawowej liście rozwijanej muszą być wpisami jednowyrazowymi. Zobacz, jak tworzyć kaskadowe listy rozwijane z wpisami wielowyrazowymi.
    2. Ta metoda nie zadziała, jeśli pozycje na głównej liście rozwijanej zawierają znaki niedozwolone w nazwach zakresów, takie jak myślnik (-), ampersand (&) itp. Rozwiązaniem jest stworzenie dynamicznego kaskadowego rozwijania, które nie ma tego ograniczenia.
    3. Stworzone w ten sposób menu rozwijane nie są aktualizowane automatycznie, tzn. będziesz musiał zmieniać referencje nazwanych zakresów za każdym razem, gdy będziesz dodawał lub usuwał elementy na listach źródłowych. Aby pokonać to ograniczenie, spróbuj stworzyć dynamiczną kaskadową listę rozwijaną.

    Tworzenie kaskadowych list rozwijanych z wpisami wielosłownymi

    Formuły INDIRECT, których użyliśmy w powyższym przykładzie, mogą obsługiwać tylko pozycje jednowyrazowe. Na przykład formuła =INDIRECT(A2) pośrednio odwołuje się do komórki A2 i wyświetla nazwany zakres dokładnie o takiej samej nazwie, jaka znajduje się w odwołanej komórce. W nazwach Excela nie są jednak dozwolone spacje, dlatego formuła ta nie zadziała w przypadku nazw wielowyrazowych.

    Rozwiązaniem jest użycie funkcji INDIRECT w połączeniu z SUBSTITUTE tak jak to zrobiliśmy przy tworzeniu 3. dropdownu.

    Załóżmy, że masz Melon wodny W tym przypadku wymieniasz listę eksporterów melona wodnego jednym słowem bez spacji -. Arbuz .

    Następnie dla drugiego dropdownu zastosuj Excel Data Validation z następującą formułą, która usuwa spacje z nazwy w komórce A2:

    =INDIRECT(SUBSTITUTE(A2," ","))

    Jak zapobiec zmianom w podstawowej liście rozwijanej

    Wyobraź sobie następujący scenariusz. Twój użytkownik dokonał wyboru na wszystkich listach rozwijanych, a następnie zmienił zdanie, wrócił do pierwszej listy i wybrał inną pozycję. W rezultacie 1. i 2. wybór są niedopasowane. Aby zapobiec tej sytuacji, możesz chcieć zablokować wszelkie zmiany na pierwszej liście rozwijanej, gdy tylko wybór zostanie dokonany na drugiej liście.

    Aby to zrobić, podczas tworzenia pierwszego dropdownu użyj specjalnej formuły, która sprawdzi, czy w drugim menu rozwijanym wybrana jest jakaś pozycja:

    =IF(B2="", Fruit, INDIRECT("FakeList"))

    Gdzie B2 zawiera drugi dropdown, " Owoce " to nazwa listy, która pojawia się w pierwszym menu rozwijanym, a " FakeList " to każde fałszywe imię, które nie istnieje.

    Teraz, jeśli jakikolwiek element jest wybrany w 2. liście rozwijanej, nie będzie żadnych wyborów, gdy użytkownik kliknie na strzałkę obok pierwszej listy.

    Tworzenie dynamicznych kaskadowych list rozwijanych w programie Excel

    Główną zaletą dynamicznej listy rozwijanej zależnej od Excela jest to, że możesz swobodnie edytować listy źródłowe, a twoje rozwijane pola będą aktualizowane w locie. Oczywiście tworzenie dynamicznych rozwijanych list wymaga nieco więcej czasu i bardziej skomplikowanych formuł, ale uważam, że jest to godna inwestycja, ponieważ po skonfigurowaniu takie menu rozwijane są prawdziwą przyjemnością do pracy.

    Jak w przypadku prawie wszystkiego w Excelu, ten sam rezultat można osiągnąć na kilka sposobów. W szczególności można stworzyć dynamiczne rozwijanie za pomocą kombinacji funkcji OFFSET, INDIRECT i COUNTA lub bardziej odpornej formuły INDEX MATCH. Ten ostatni sposób jest przeze mnie preferowany, ponieważ zapewnia liczne korzyści, z których najistotniejsze to:

    1. Musisz utworzyć tylko 3 nazwane zakresy, niezależnie od tego, ile pozycji jest na liście głównej i zależnej.
    2. Twoje listy mogą zawierać elementy wielowyrazowe oraz wszelkie znaki specjalne.
    3. Liczba wpisów może być różna w każdej kolumnie.
    4. Kolejność sortowania wpisów nie ma znaczenia.
    5. Wreszcie, bardzo łatwo jest utrzymać i modyfikować listy źródłowe.

    Dobra, dość teorii, przejdźmy do praktyki.

    1. zorganizuj dane źródłowe w tabeli

    Jak zwykle, pierwszą rzeczą, którą musisz zrobić, jest zapisanie wszystkich wyborów dla list rozwijanych w arkuszu. Tym razem będziesz musiał przechowywać dane źródłowe w tabeli Excela. W tym celu, po wprowadzeniu danych, zaznacz wszystkie wpisy i naciśnij Ctrl + T lub kliknij Wkładka tab> Tabela Następnie wpisz nazwę swojej tabeli w Nazwa tabeli pudełko.

    Najbardziej wygodnym i wizualnym podejściem jest przechowywanie elementów dla pierwszego dropdownu jako nagłówków tabeli, a elementów dla zależnego dropdownu jako danych tabeli. Poniższy zrzut ekranu ilustruje strukturę mojej tabeli, nazwanej eksporterzy_tbl - nazwy owoców są nagłówkami tabeli, a pod odpowiednią nazwą owocu dodano listę krajów eksportujących.

    2) Tworzenie nazw w programie Excel

    Teraz, gdy twoje dane źródłowe są gotowe, nadszedł czas, aby skonfigurować nazwane referencje, które dynamicznie pobierają odpowiednią listę z twojej tabeli.

    2.1. Dodaj nazwę dla wiersza nagłówka tabeli (głównego zrzutu)

    Aby utworzyć nową nazwę odnoszącą się do nagłówka tabeli, zaznacz ją, a następnie kliknij przycisk Formuły > Nazwa Kierownik > Nowy lub naciśnij Ctrl + F3 .

    Microsoft Excel użyje wbudowanego systemu odwołań do tabel, aby utworzyć nazwę table_name[#Headers] wzór.

    Nadaj mu jakąś sensowną i łatwą do zapamiętania nazwę, np. lista owoców i kliknij OK .

    2.2 Utwórz nazwę dla komórki zawierającej pierwszą listę rozwijaną

    Wiem, że nie masz jeszcze żadnego dropdownu :) Ale musisz wybrać komórkę, w której będzie się znajdował Twój pierwszy dropdown i stworzyć dla niej nazwę, ponieważ będziesz musiał uwzględnić tę nazwę w trzecim odwołaniu do nazwy.

    Na przykład, moje pierwsze pole rozwijane znajduje się w komórce B1 w Arkuszu 2, więc tworzę dla niego nazwę, coś prostego i niewymagającego wyjaśnień, np. owoce :

    Wskazówka. Użyj odpowiednich odwołań do komórek, aby kopiowanie list rozwijanych na całym arkuszu.

    Upewnij się, że przeczytasz kilka następnych akapitów uważnie, ponieważ jest to bardzo przydatna wskazówka, której nie chcesz przegapić. Wielkie dzięki dla Karen za zamieszczenie go!

    Jeśli planujesz skopiować swoje listy rozwijane do innych komórek, to podczas tworzenia nazwy komórki (komórek) z pierwszą listą rozwijaną użyj mieszanych odwołań do komórek.

    Aby rozwijane okna były poprawnie kopiowane do innych kolumny (czyli w prawo), użyj względnych odniesień do kolumn (bez znaku $) i bezwzględnych odniesień do wierszy (z $), takich jak = Arkusz2!B$1.

    W rezultacie zależna lista rozwijana B1 pojawi się w komórce B2; zależna lista rozwijana C1 wyświetli się w C2 itd.

    A jeśli planujesz skopiować listę rozwijaną do innych wiersze (tj. w dół kolumny), a następnie użyj bezwzględnych współrzędnych kolumny (z $) i względnych wierszy (bez $), jak = Arkusz2!$B1.

    Aby skopiować komórkę rozwijaną w dowolnym kierunku, użyj odwołania względnego (bez znaku $), takiego jak = Sheet2!B1.

    2.3 Utwórz nazwę, aby pobrać pozycje menu zależnego

    Zamiast ustawiać unikalne nazwy dla każdej z list zależnych, jak to zrobiliśmy w poprzednim przykładzie, stworzymy jedną nazwana formuła formuła ta nie jest przypisana do żadnej konkretnej komórki lub zakresu komórek. Pobiera ona prawidłową listę wpisów dla drugiego dropdownu w zależności od tego, jaki wybór został dokonany na pierwszej liście rozwijanej. Główną korzyścią z użycia tej formuły jest to, że nie będziesz musiał tworzyć nowych nazw w miarę dodawania nowych wpisów do pierwszej listy rozwijanej - jedna nazwana formuła obejmuje je wszystkie.

    Za pomocą tej formuły tworzysz nową nazwę Excela:

    =INDEX(exporters_tbl,,MATCH(fruit,fruit_list,0))

    Gdzie:

    • eksporterzy_tbl - nazwa tabeli (utworzonej w kroku 1);
    • owoce - nazwa komórki zawierającej pierwszą listę rozwijaną (utworzoną w kroku 2.2);
    • lista owoców - nazwa odnosząca się do wiersza nagłówka tabeli (utworzonego w kroku 2.1).

    Nadałem mu imię eksporterzy_lista , jak widać na poniższym zrzucie ekranu.

    Cóż, wykonałeś już większą część pracy! Zanim przejdziesz do ostatniego kroku, dobrym pomysłem może być otwarcie Menedżera nazw ( Ctrl + F3 ) i sprawdzenie nazw i referencji:

    3) Konfiguracja sprawdzania poprawności danych w programie Excel

    To jest właściwie najłatwiejsza część. Mając dwie nazwane formuły, ustawiasz Walidację Danych w zwykły sposób ( Dane tab> Zatwierdzanie danych ).

    • Dla pierwszej listy rozwijanej, w polu Źródło, wpisz =fruit_list (nazwa utworzona w kroku 2.1).
    • Na liście rozwijanej dependent wpisz =exporters_list (nazwa utworzona w kroku 2.3).

    Twoje dynamiczne kaskadowe menu rozwijane jest gotowe i będzie się automatycznie aktualizować, odzwierciedlając zmiany, których dokonałeś w tabeli źródłowej.

    To dynamiczne rozwijanie Excela, doskonałe pod każdym innym względem, ma jedną wadę - jeśli kolumny twojej tabeli źródłowej zawierają inną liczbę pozycji, puste wiersze pojawią się w twoim menu w taki sposób:

    Wyklucz puste wiersze z dynamicznego kaskadowego rozwijania.

    Jeśli chcesz wyczyścić wszelkie puste linie w swoich polach rozwijanych, będziesz musiał zrobić krok dalej i poprawić formułę INDEX / MATCH używaną do tworzenia zależnej dynamicznej listy rozwijanej.

    Pomysł polega na użyciu 2 funkcji INDEX, gdzie pierwsza pobiera lewą górną komórkę, a druga zwraca prawą dolną komórkę zakresu, lub funkcji OFFSET z zagnieżdżonymi INDEX i COUNTA. Szczegółowe kroki następują poniżej:

    1. utworzyć dwie dodatkowe nazwy

    Aby nie uczynić formuły zbyt nieporęcznej, najpierw utwórz kilka nazw pomocników z następującymi prostymi formułami:

    • Nazwa zwana suma kolumn aby odwołać się do wybranego numeru kolumny:

      =MATCH(fruit,fruit_list,0)

    • Nazwa zwana cały_kol aby odwołać się do wybranej kolumny (nie do numeru kolumny, ale do całej kolumny):

      =INDEX(eksporterzy_tbl,,col_num)

    W powyższych wzorach, eksporterzy_tbl to nazwa twojej tabeli źródłowej, owoce jest nazwą komórki zawierającej pierwszy dropdown, a lista owoców jest nazwą odnoszącą się do wiersza nagłówka tabeli.

    2) Utwórz nazwaną referencję dla zależnego dropdownu

    Następnie użyj jednej z poniższych formuł, aby utworzyć nową nazwę (nazwijmy ją eksporterzy_lista2 ) do wykorzystania z zależną listą rozwijaną:

    =INDEX(eksporterzy_tbl,1,col_num) : INDEX(eksporterzy_tbl, COUNTA(entire_col), col_num)

    =OFFSET(INDEX(exporters_tbl,1,col_num),0,0,COUNTA(entire_col))

    3. zastosuj walidację danych

    Na koniec zaznacz komórkę zawierającą zależny dropdown i zastosuj Walidację Danych wpisując =. eksporterzy_lista2 (nazwa utworzona w poprzednim kroku) w Źródło pudełko.

    Poniższy zrzut ekranu pokazuje wynikowe dynamiczne menu rozwijane w programie Excel, gdzie wszystkie puste linie zniknęły!

    Uwaga. Podczas pracy z dynamicznymi kaskadowymi listami rozwijanymi utworzonymi za pomocą powyższych formuł nic nie stoi na przeszkodzie, aby użytkownik zmienił wartość w pierwszym dropdown po dokonaniu wyboru w drugim menu, w rezultacie wybory w podstawowym i dodatkowym dropdowns mogą się nie zgadzać. Możesz zablokować zmiany w pierwszym polu po dokonaniu wyboru w drugim, używając VBA lubskomplikowane formuły zaproponowane w tym tutorialu.

    W ten sposób tworzy się w Excelu listę sprawdzania poprawności danych na podstawie wartości innej listy. Zapraszamy do pobrania naszych przykładowych skoroszytów, aby zobaczyć kaskadowe listy rozwijane w akcji. Dziękujemy za lekturę!

    Zeszyt ćwiczeń do pobrania

    Kaskadowe rozwijanie próbki 1- wersja łatwa

    Przykładowy dropdown kaskadowy 2 - wersja zaawansowana bez spacji

    Michael Brown jest oddanym entuzjastą technologii z pasją do upraszczania złożonych procesów za pomocą narzędzi programowych. Dzięki ponad dziesięcioletniemu doświadczeniu w branży technologicznej doskonalił swoje umiejętności w programach Microsoft Excel i Outlook, a także w Arkuszach i Dokumentach Google. Blog Michaela jest poświęcony dzieleniu się swoją wiedzą i doświadczeniem z innymi, dostarczając łatwych do zastosowania wskazówek i samouczków w celu poprawy produktywności i wydajności. Niezależnie od tego, czy jesteś doświadczonym profesjonalistą, czy początkującym, blog Michaela oferuje cenne spostrzeżenia i praktyczne porady dotyczące maksymalnego wykorzystania tych niezbędnych narzędzi programowych.