Indholdsfortegnelse
For et stykke tid siden begyndte vi at udforske mulighederne i Excel-datavalidering og lærte, hvordan man opretter en simpel rulleliste i Excel baseret på en kommasepareret liste, et område af celler eller et navngivet område.
I dag vil vi undersøge denne funktion i dybden og lære at oprette kaskade dropdown-lister, der viser valgmuligheder afhængigt af den værdi, der er valgt i den første dropdown-liste. Med andre ord vil vi lave en Excel-datavalideringsliste baseret på værdien af en anden liste.
Sådan oprettes flere afhængige dropdowns i Excel
Det er nemt at lave en afhængig drop-down-liste med flere niveauer i Excel. Du skal blot bruge nogle få navngivne intervaller og formlen INDIRECT. Denne metode fungerer med alle versioner af Excel 365 - 2010 og tidligere.
1. Indtast posterne til rullelisterne
Først skal du skrive de poster, du ønsker skal vises i rullelisterne, hver liste i en separat kolonne. Jeg opretter f.eks. en rulleliste med frugteksportører i kaskadeform, og kolonne A i mit kildeark ( Frugt ) indeholder elementerne i den første dropdown og 3 andre kolonner indeholder elementerne for de afhængige dropdowns.
2. Opret navngivne intervaller
Nu skal du oprette navne til din hovedliste og til hver af de afhængige lister. Du kan gøre dette enten ved at tilføje et nyt navn i Navn Manager vindue ( Formler faneblad> Navn Manager> Ny) eller ved at indtaste navnet direkte i Navneboks .
Bemærk: Vær opmærksom på, at hvis din første række er en slags kolonneoverskrift, som du kan se i skærmbilledet ovenfor, skal du ikke inkludere den i det navngivne område.
Du kan finde en detaljeret trin-for-trin vejledning i Sådan definerer du et navn i Excel.
Det skal du huske:
- De emner, der skal vises i den første rulleliste, skal være et ord, f.eks. Abrikos , Mango , Appelsiner Hvis du har elementer, der består af to, tre eller flere ord, kan du se Sådan oprettes en kaskade dropdown med flere ord.
- Navnene på de afhængige lister skal være nøjagtigt de samme som den tilsvarende post i hovedlisten. F.eks. skal den afhængige liste, der skal vises, når " Mango " er valgt fra den første rulleliste, skal hedde Mango .
Når du er færdig, kan du trykke på Ctrl+F3 for at åbne Navn Manager og kontrollér, om alle listerne har korrekte navne og referencer.
3. Lav den første (hoved)drop-down liste
- Vælg en celle eller flere celler i det samme eller et andet regneark, hvor du vil have din primære rulleliste vist.
- Gå til Data klikker du på Validering af data og oprette en rulleliste baseret på et navngivet område på den sædvanlige måde ved at vælge Liste under Tillad og indtaste navnet på området i feltet Kilde boks.
Du kan finde de detaljerede trin under Udarbejdelse af en rulleliste baseret på et navngivet område.
Resultatet er, at du får en drop-down menu i dit regneark, der ligner denne:
4. Opret den afhængige rulleliste
Vælg en eller flere celler til din afhængige drop-down menu og anvend Excel Data Validation igen som beskrevet i det foregående trin. Men denne gang skal du i stedet for intervallets navn indtaste følgende formel i feltet Kilde felt:
=INDIRECT(A2)
Hvor A2 er cellen med din første (primære) rulleliste.
Hvis celle A2 i øjeblikket er tom, får du fejlmeddelelsen " Kilden evaluerer i øjeblikket til en fejl. Vil du fortsætte? "
Klik sikkert på Ja , og så snart du vælger et emne i den første rulleliste, vises de tilsvarende poster i den anden, afhængige rulleliste.
5. Tilføj en tredje afhængig rulleliste (valgfrit)
Hvis det er nødvendigt, kan du tilføje en tredje kaskade-rullemenu, der enten afhænger af valget i den anden rullemenu eller af valgene i de to første rullemenuer.
Opsætning af 3. dropdown, der afhænger af 2. liste
Du kan lave en drop-down liste af denne type på samme måde som vi lige har lavet en anden afhængig drop-down menu. Husk blot de 2 vigtige ting, som vi har diskuteret ovenfor, og som er afgørende for, at dine kaskade drop-down lister fungerer korrekt.
Hvis du f.eks. ønsker at vise en liste over regioner i kolonne C afhængigt af, hvilket land der er valgt i kolonne B, opretter du en liste over regioner for hvert land og navngiver den efter landets navn, præcis som landet vises i anden dropdown-liste. En liste over indiske regioner skal f.eks. hedde "Indien", en liste over kinesiske regioner - "Kina" osv.
Derefter skal du vælge en celle for den tredje dropdown-menu (C2 i vores tilfælde) og anvende Excel Data Validation med følgende formel (B2 er cellen med den anden dropdown-menu, der indeholder en liste over lande):
=INDIRECT(B2)
Hver gang du nu vælger Indien under listen over lande i kolonne B har du følgende valgmuligheder i den tredje rulleliste:
Bemærk. Den viste liste over regioner er unik for hvert land, men den afhænger ikke af valget i den første rulleliste.
Opret en tredje dropdown-liste, der afhænger af de to første lister
Hvis du har brug for at oprette en kaskade drop-down menu, der afhænger af valgene i både den første og den anden drop-down liste, skal du gå frem på denne måde:
- Opret yderligere sæt af navngivne intervaller, og navngiv dem efter ordkombinationerne i de to første rullemenuer. Du har f.eks. Mango, appelsiner osv. i den første liste og Indien, Brasilien osv. i den 2. Derefter opretter du navngivne intervaller MangoIndia , MangoBrazil , AppelsinerIndien , AppelsinerBrasilien , osv. Disse navne må ikke indeholde understregninger eller andre ekstra tegn.
=INDIRECT(SUBSTITUTE(A2&B2," ","",""))
Hvor A2 og B2 indeholder henholdsvis den første og anden rullemenu.
Resultatet er, at din 3. rulleliste vil vise de regioner, der svarer til de Frugt og Land valgt i de 2 første rullelister.
Dette er den nemmeste måde at oprette drop-down bokse i Excel på, men denne metode har dog en række begrænsninger.
Begrænsninger ved denne fremgangsmåde:
- Elementerne i den primære rulleliste skal være poster med ét ord. Se, hvordan du opretter rullelister i kaskade med poster med flere ord.
- Denne metode virker ikke, hvis posterne i din hovedrullemenu indeholder tegn, der ikke er tilladt i intervalnavne, f.eks. bindestreg (-), ampersand (&) osv. Løsningen er at oprette en dynamisk kaskade-rullemenu, der ikke har denne begrænsning.
- Dropdown-menuer, der oprettes på denne måde, opdateres ikke automatisk, dvs. du skal ændre referencerne til de navngivne områder, hver gang du tilføjer eller fjerner elementer i kildelisterne. For at komme over denne begrænsning kan du prøve at lave en dynamisk kaskade-dropdown-liste.
Opret drop-down-lister med flere ord i kaskadeform
INDIRECT-formlerne, som vi brugte i eksemplet ovenfor, kan kun håndtere emner med ét ord. For eksempel henviser formlen =INDIRECT(A2) indirekte til celle A2 og viser det navngivne område med nøjagtigt det samme navn som i den refererede celle. Mellemrum er dog ikke tilladt i Excel-navne, og derfor fungerer denne formel ikke med navne med flere ord.
Løsningen er at bruge INDIRECT-funktionen i kombination med SUBSTITUTE, som vi gjorde, da vi oprettede en tredje dropdown.
Antag, at du har Vandmelon I dette tilfælde skal du angive en liste over eksportører af vandmeloner med ét ord uden mellemrum - Vandmelon .
Anvend derefter Excel-datavalidering på den anden rulleliste med følgende formel, som fjerner mellemrummene fra navnet i celle A2:
=INDIRECT(SUBSTITUTE(A2," ","",""))
Sådan forhindrer du ændringer i den primære rulleliste
Forestil dig følgende scenario: Din bruger har foretaget valg i alle rullelisterne, men har så ombestemt sig, er gået tilbage til den første liste og har valgt et andet emne. Resultatet er, at det første og det andet valg ikke passer sammen. For at forhindre dette, kan du blokere ændringer i den første rulleliste, så snart der foretages et valg i den anden liste.
Når du opretter den første dropdown-menu, skal du bruge en særlig formel til at kontrollere, om der er valgt en post i den anden dropdown-menu:
=IF(B2="", Frugt, INDIRECT("FakeList"))
Hvor B2 indeholder den anden rulleliste, " Frugt " er navnet på den liste, der vises i den første rullemenuen, og " FakeList " er et falsk navn, der ikke eksisterer.
Hvis der er valgt et emne i den anden rulleliste, er der nu ingen valgmuligheder, når brugeren klikker på pilen ved siden af den første liste.
Oprettelse af dynamiske drop-down-lister i Excel med kaskadeformede lister
Den største fordel ved en dynamisk Excel-afhængig drop-down liste er, at du frit kan redigere kildelisterne, og dine drop-down bokse bliver opdateret i farten. Selvfølgelig kræver det lidt mere tid og mere komplekse formler at skabe dynamiske drop-downs, men jeg mener, at det er en investering værd, for når først de er oprettet, er sådanne drop-down menuer en sand fornøjelse at arbejde med.
Som med næsten alt andet i Excel kan du opnå det samme resultat på flere måder. Du kan især oprette en dynamisk dropdown ved hjælp af en kombination af OFFSET-, INDIRECT- og COUNTA-funktionerne eller en mere modstandsdygtig INDEX MATCH-formel. Sidstnævnte er min foretrukne metode, fordi den giver mange fordele, hvoraf de vigtigste er:
- Du skal kun oprette 3 navngivne intervaller, uanset hvor mange elementer der er i hoved- og afhængige lister.
- Dine lister kan indeholde emner med flere ord og særlige tegn.
- Antallet af angivelser kan variere i hver kolonne.
- Posternes sorteringsrækkefølge er ligegyldig.
- Endelig er det meget nemt at vedligeholde og ændre kildelisterne.
Okay, nok teori, lad os komme til praksis.
1. Organiser dine kildedata i en tabel
Som sædvanlig er det første, du skal gøre, at skrive alle valgmulighederne til dine drop-down-lister ned i et regneark. Denne gang skal du gemme kildedataene i en Excel-tabelle. Når du har indtastet dataene, skal du markere alle posterne og trykke på Ctrl + T eller klikke på Indsæt faneblad> Tabel Skriv derefter et navn på din tabel i feltet Bordnavn boks.
Den mest praktiske og visuelle fremgangsmåde er at gemme elementerne til den første dropdown som tabeloverskrifter og elementerne til den afhængige dropdown som tabeldata. Skærmbilledet nedenfor illustrerer strukturen af min tabel, der hedder eksportører_tbl - frugtnavnene er tabeloverskrifter, og der er tilføjet en liste over eksportlande under det tilsvarende frugtnavn.
2. Opret Excel-navne
Nu, hvor dine kildedata er klar, er det tid til at oprette navngivne referencer, der dynamisk henter den korrekte liste fra tabellen.
2.1. Tilføj et navn til tabellens overskriftsrække (hovedliste)
Hvis du vil oprette et nyt navn, der henviser til tabeloverskriften, skal du vælge den og derefter enten klikke på Formler > Navn Manager > Ny eller tryk på Ctrl + F3 .
Microsoft Excel vil bruge det indbyggede tabelreferencesystem til at oprette navnet på den table_name[#Headers] mønster.
Giv den et meningsfuldt og let at huske et navn, f.eks. frugt_liste , og klik på OK .
2.2. Opret et navn til cellen, der indeholder den første rulleliste
Jeg ved godt, at du ikke har nogen dropdown endnu :) Men du skal vælge den celle, der skal huse din første dropdown, og oprette et navn til den celle nu, fordi du skal inkludere dette navn i det tredje navns reference.
Min første drop-down boks er f.eks. placeret i celle B1 på ark 2, så jeg opretter et navn til den, noget simpelt og selvforklarende som f.eks. frugt :
Tip. Brug passende cellehenvisninger til at kopiere rullelister på tværs af regnearket.
Sørg for at læse de følgende par stykker omhyggeligt, for det er et meget nyttigt tip, som du ikke vil gå glip af. Mange tak til Karen for at have lagt det ud!
Hvis du planlægger at kopiere dine rullelister til andre celler, skal du bruge blandede cellereferencer, når du opretter navnet på cellen/cellerne med din første rulleliste.
For at drop-downs kan kopieres korrekt til andre kolonner (dvs. til højre), skal du bruge relative kolonnehenvisninger (uden $-tegnet) og absolutte rækkehenvisninger (med $) som f.eks. = Sheet2!B$1.
Resultatet er, at B1's afhængige rulleliste vises i celle B2; C1's afhængige rulleliste vises i C2 osv.
Og hvis du har planer om at kopiere rullemenuerne til andre rækker (dvs. nedad i kolonnen), og brug derefter absolutte kolonne- (med $) og relative række- (uden $) koordinater som = Sheet2!$B1.
Hvis du vil kopiere en drop-down-celle i en hvilken som helst retning, skal du bruge en relativ reference (uden $-tegnet) som f.eks. = Sheet2!B1.
2.3. Opret et navn til at hente de afhængige menuposter i menuen
I stedet for at oprette unikke navne for hver af de afhængige lister, som vi gjorde i det foregående eksempel, opretter vi et navngivne formel som ikke er tildelt en bestemt celle eller et område af celler. Den vil hente den korrekte liste over poster til den anden rulleliste afhængigt af hvilket valg der er foretaget i den første rulleliste. Den største fordel ved at bruge denne formel er, at du ikke behøver at oprette nye navne, når du tilføjer nye poster til den første rulleliste - én navngiven formel dækker dem alle.
Du opretter et nyt Excel-navn med denne formel:
=INDEX(exporters_tbl,,MATCH(fruit,fruit_list,0))
Hvor:
eksportører_tbl
- navnet på tabellen (oprettet i trin 1);frugt
- navnet på den celle, der indeholder den første rulleliste (oprettet i trin 2.2);frugt_liste
- det navn, der henviser til tabellens overskriftsrække (oprettet i trin 2.1).
Jeg gav den et navn eksportører_liste , som du kan se på skærmbilledet nedenfor.
Du har allerede gjort det meste af arbejdet! Før du går til det sidste trin, kan det være en god idé at åbne Navnehåndteringsprogrammet ( Ctrl + F3 ) og kontrollere navnene og referencerne:
3. Opsætning af Excel-datavalidering
Dette er faktisk den nemmeste del. Når de to navngivne formler er på plads, skal du opsætte datavalidering på den sædvanlige måde ( Data faneblad> Validering af data ).
- På den første rulleliste skal du i feltet Kilde indtaste =frugt_liste (det navn, der blev oprettet i trin 2.1).
- Indtast følgende på rullelisten for den afhængige liste =exporters_list (det navn, der blev oprettet i trin 2.3).
Færdig! Din dynamiske drop-down-menu er færdig og vil automatisk blive opdateret og afspejle de ændringer, du har foretaget i kildetabellen.
Denne dynamiske Excel-rullemenu, der er perfekt i alle andre henseender, har én mangel - hvis kolonnerne i din kildetabel indeholder et andet antal elementer, vil de tomme rækker blive vist i din menu på denne måde:
Udelukke tomme rækker fra den dynamiske kaskade-rullemenu
Hvis du vil fjerne alle tomme linjer i dine drop-down bokse, skal du gå et skridt videre og forbedre INDEX / MATCH formlen, der bruges til at oprette den afhængige dynamiske drop-down liste.
Ideen er at bruge 2 INDEX-funktioner, hvor den første får den øverste venstre celle og den anden returnerer den nederste højre celle i intervallet, eller OFFSET-funktionen med INDEX og COUNTA. De detaljerede trin følger nedenfor:
1. Opret to yderligere navne
For ikke at gøre formlen for omfangsrig skal du først oprette et par hjælpenavne med følgende enkle formler:
- Et navn kaldet col_num for at henvise til det valgte kolonnenummer:
=MATCH(frugt,frugt_liste,0)
- Et navn kaldet hele_kol for at henvise til den valgte kolonne (ikke kolonnens nummer, men hele kolonnen):
=INDEX(exporters_tbl,,col_num)
I ovenstående formler, eksportører_tbl
er navnet på dit kildetabel, frugt
er navnet på den celle, der indeholder den første rullemenu, og frugt_liste
er det navn, der henviser til tabellens overskriftsrække.
2. Opret den navngivne reference for den afhængige dropdown
Brug derefter en af nedenstående formler til at oprette et nyt navn (lad os kalde det eksportører_liste2 ), der skal bruges med den afhængige rulleliste:
=INDEX(exporters_tbl,1,col_num) : INDEX(exporters_tbl, COUNTA(entire_col), col_num)
=OFFSET(INDEX(exporters_tbl,1,col_num),0,0,0,COUNTA(entire_col))
3. Anvend datavalidering
Endelig skal du vælge den celle, der indeholder den afhængige rulleliste, og anvende datavalidering ved at indtaste = eksportører_liste2 (det navn, der blev oprettet i det foregående trin)i Kilde boks.
Skærmbilledet nedenfor viser den resulterende dynamiske drop-down menu i Excel, hvor alle tomme linjer er væk!
Bemærk. Når du arbejder med dynamiske dropdown-lister i kaskade, der er oprettet med ovenstående formler, er der intet, der forhindrer brugeren i at ændre værdien i den første dropdown-liste, efter at han har foretaget valget i den anden menu, hvilket kan medføre, at valgene i den primære og sekundære dropdown-liste ikke stemmer overens. Du kan blokere ændringer i den første boks, efter at der er foretaget et valg i den anden, ved at bruge enten VBA ellerkomplekse formler, der foreslås i denne vejledning.
Sådan opretter du en Excel-datavalideringsliste baseret på værdierne i en anden liste. Du er velkommen til at downloade vores eksempler på arbejdsmapper for at se kaskade drop-down-listerne i aktion. Tak for læsningen!
Arbejdsbog til download
Cascading Dropdown Sample 1- nem version
Cascading Dropdown Eksempel 2 - avanceret version uden tomme felter