Innholdsfortegnelse
For en stund siden begynte vi å utforske egenskapene til Excel-datavalidering og lærte hvordan vi lager en enkel rullegardinliste i Excel basert på en kommadelt liste, celleområde eller et navngitt område.
I dag skal vi undersøke denne funksjonen i dybden og lære hvordan du lager rullegardinlister som viser valg avhengig av verdien valgt i første rullegardin. For å si det annerledes, vil vi lage en Excel-datavalideringsliste basert på verdien av en annen liste.
Hvordan lage flere avhengige rullegardinmenyen i Excel
Lage en multi -nivåavhengige rullegardinlister i Excel er enkelt. Alt du trenger er noen få navngitte områder og den INDIREKTE formelen. Denne metoden fungerer med alle versjoner av Excel 365 - 2010 og tidligere.
1. Skriv inn oppføringene for rullegardinlistene
Først skriver du inn oppføringene du ønsker skal vises i rullegardinlistene, hver liste i en egen kolonne. For eksempel lager jeg en rullegardin for frukteksportører, og kolonne A på kildearket mitt ( Fruit ) inkluderer elementene i den første rullegardinmenyen og 3 andre kolonner viser elementene for de avhengige rullegardinlistene.
2. Opprett navngitte områder
Nå må du lage navn for hovedlisten din og for hver av de avhengige listene. Du kan gjøre dette enten ved å legge til et nytt navn i vinduet Navnebehandler (fanen Formler > Navnebehandler > Ny) eller skrive inntegn) og absolutte rad (med $) referanser som = Ark2!B$1.
Som et resultat vil B1s avhengige rullegardinliste vises i celle B2; C1s avhengige rullegardin vil vises i C2, og så videre.
Og hvis du planlegger å kopiere rullegardinmenyene til andre rader (dvs. nedover kolonne), bruk deretter absolutt kolonne (med $) og relative rad (uten $) koordinater som = Ark2!$B1.
For å kopiere en rullegardincelle i en hvilken som helst retning, bruk en relativ referanse (uten $-tegnet) som = Ark2!B1.
2.3. Opprett et navn for å hente oppføringene fra den avhengige menyen
I stedet for å sette opp unike navn for hver av de avhengige listene som vi gjorde i forrige eksempel, skal vi lage en navngitt formel som er ikke tilordnet noen bestemt celle eller et celleområde. Den vil hente riktig liste over oppføringer for den andre rullegardinmenyen avhengig av hvilket valg som er gjort i den første rullegardinlisten. Hovedfordelen med å bruke denne formelen er at du ikke trenger å opprette nye navn når du legger til nye oppføringer i den første rullegardinlisten – én navngitt formel dekker dem alle.
Du oppretter et nytt Excel-navn med denne formelen:
=INDEX(exporters_tbl,,MATCH(fruit,fruit_list,0))
Hvor:
-
exporters_tbl
- navnet på tabellen (opprettet i trinn 1); -
fruit
- navnet på cellen som inneholder den første rullegardinlisten (opprettet i trinn 2.2); -
fruit_list
- navnet som refererer til tabellens overskriftsrad (opprettet itrinn 2.1).
Jeg ga den et navn eksportørliste , som du ser på skjermbildet nedenfor.
Vel , du har allerede gjort hoveddelen av jobben! Før du kommer til det siste trinnet, kan det være en god idé å åpne navnebehandlingen ( Ctrl + F3 ) og bekrefte navnene og referansene:
3. Sett opp Excel-datavalidering
Dette er faktisk den enkleste delen. Med de to navngitte formlene på plass, setter du opp datavalidering på vanlig måte (fanen Data > Datavalidering ).
- For den første rullegardinlisten, i kildeboksen, skriv inn =fruktliste (navnet opprettet i trinn 2.1).
- For den avhengige rullegardinlisten, skriv inn =eksportørliste (navnet opprettet i trinn 2.3).
Ferdig! Den dynamiske rullegardinmenyen din er fullført og oppdateres automatisk og gjenspeiler endringene du har gjort i kildetabellen.
Denne dynamiske Excel-rullegardinmenyen, perfekt i alle andre henseender , har en mangel - hvis kolonnene i kildetabellen inneholder et annet antall elementer, vil de tomme radene vises i menyen slik:
Ekskluder tomme rader fra dynamisk overlappende rullegardin
Hvis du vil rense noen tomme linjer i rullegardinboksene dine, må du ta et skritt videre og forbedre INDEX / MATCH-formelen som brukes til å lage den avhengige dynamiske rullegardinlisten.
Ideen er å bruke2 INDEKS-funksjoner, der den første får den øverste venstre cellen og den andre returnerer den nedre høyre cellen i området, eller OFFSET-funksjonen med nestet INDEKS og COUNTA. De detaljerte trinnene følger nedenfor:
1. Opprett to ekstra navn
For ikke å gjøre formelen for stor, lag først et par hjelpenavn med følgende enkle formler:
- Et navn kalt col_num for å referere til det valgte kolonnenummeret:
=MATCH(fruit,fruit_list,0)
- Et navn kalt hele_kolonnen for å referere til den valgte kolonnen (ikke kolonnenummeret, men hele kolonnen):
=INDEX(exporters_tbl,,col_num)
I formlene ovenfor er exporters_tbl
kildetabellens navn, fruit
er navnet på cellen som inneholder den første rullegardinmenyen, og fruit_list
er navnet som refererer til tabellens overskriftsrad.
2. Opprett den navngitte referansen for den avhengige rullegardinmenyen
Deretter bruker du en av formlene nedenfor for å lage et nytt navn (la oss kalle det eksportører_liste2 ) som skal brukes med den avhengige rullegardinlisten:
=INDEX(exporters_tbl,1,col_num) : INDEX(exporters_tbl, COUNTA(entire_col), col_num)
=OFFSET(INDEX(exporters_tbl,1,col_num),0,0,COUNTA(entire_col))
3. Bruk datavalidering
Til slutt velger du cellen som inneholder den avhengige rullegardinmenyen og bruker datavalidering ved å skrive inn = exporters_list2 (navnet opprettet i forrige trinn) i Kilde boksen.
Skjermbildet nedenfor viser den resulterende dynamiske rullegardinmenyen i Excel der alle tomme linjer er borte!
Merk. Når du arbeider med dynamisk overlappende rullegardinlisteropprettet med formlene ovenfor, er det ingenting som hindrer brukeren i å endre verdien i den første rullegardinmenyen etter å ha gjort valget i den andre menyen, som et resultat kan valgene i de primære og sekundære rullegardinlistene ikke samsvare. Du kan blokkere endringer i den første boksen etter at et valg er gjort i den andre ved å bruke enten VBA eller komplekse formler foreslått i denne opplæringen.
Slik lager du en Excel-datavalideringsliste basert på verdiene til en annen liste. Last ned våre eksempelarbeidsbøker for å se rullegardinlistene i aksjon. Takk for at du leste!
Øvningsarbeidsbok for nedlasting
Cascading Dropdown Sample 1 - enkel versjon
Cascading Dropdown Sample 2 - avansert versjon uten blanks
navn direkte i Navneboksen.
Merk. Vær oppmerksom på at hvis den første raden er en slags kolonneoverskrift som du ser i skjermbildet ovenfor, skal du ikke inkludere den i det navngitte området.
For detaljerte trinnvise instruksjoner, se Hvordan definere et navn i Excel.
Ting å huske:
- Elementene til vises i den første nedtrekkslisten må være ettordsoppføringer, f.eks. Aprikos , Mango , appelsiner . Hvis du har elementer som består av to, tre eller flere ord, vennligst se Hvordan lage en rullegardinmeny med flere ord.
- Navnene på de avhengige listene må være nøyaktig de samme som den samsvarende oppføringen i hovedvinduet liste. For eksempel bør den avhengige listen som skal vises når " Mango " velges fra den første rullegardinlisten, hete Mango .
Når ferdig , kan det være lurt å trykke Ctrl+F3 for å åpne vinduet Name Manager og sjekke om alle listene har riktige navn og referanser.
3 . Lag den første (hoved) rullegardinlisten
- I samme eller i et annet regneark velger du en celle eller flere celler der du vil at den primære rullegardinlisten din skal vises.
- Gå til kategorien Data , klikk Datavalidering og sett opp en rullegardinliste basert på et navngitt område på vanlig måte ved å velge Liste under Tillat og skriv inn områdenavnet i Kilde -boksen.
For detaljerte trinn, se Lage en rullegardinliste basert på et navngitt område.
Som et resultat vil du ha en rullegardinmeny i regnearket som ligner på denne:
4. Lag den avhengige rullegardinlisten
Velg en(e) celle(r) for din avhengige rullegardinmeny og bruk Excel-datavalidering igjen som beskrevet i forrige trinn. Men denne gangen, i stedet for områdets navn, skriver du inn følgende formel i Kilde -feltet:
=INDIRECT(A2)
Hvor A2 er cellen med din første (primære) nedtrekksliste.
Hvis celle A2 for øyeblikket er tom, vil du få feilmeldingen " Kilden evalueres for øyeblikket til en feil. Vil du fortsette ? "
Klikk trygt på Ja , og så snart du velger et element fra den første rullegardinmenyen, vil du se oppføringene som tilsvarer det i den andre, avhengige , rullegardinliste.
5. Legg til en tredje avhengig rullegardinliste (valgfritt)
Om nødvendig kan du legge til en tredje rullegardinliste som avhenger enten av valget i den andre rullegardinmenyen eller av valgene i den første to rullegardiner.
Sett opp tredje rullegardin som avhenger av 2. liste
Du kan lage rullegardinlisten av denne typen på samme måte som vi nettopp har laget en andre avhengig rulle- ned menyen. Bare husk de 2 viktige tingene diskutert ovenfor, som er avgjørende forriktig arbeid av rullegardinlistene dine.
Hvis du for eksempel vil vise en liste over regioner i kolonne C avhengig av hvilket land som er valgt i kolonne B, oppretter du en liste over regioner for hver land og navngi det etter landets navn, akkurat slik landet vises i andre rullegardinlister. For eksempel bør en liste over indiske regioner hete "India", en liste over kinesiske regioner - "Kina", og så videre.
Deretter velger du en celle for den tredje rullegardinmenyen (C2 i vår case) og bruk Excel-datavalidering med følgende formel (B2 er cellen med den andre rullegardinmenyen som inneholder en liste over land):
=INDIRECT(B2)
Nå, hver gang du velger India under listen over land i kolonne B, vil du ha følgende valg i den tredje rullegardinmenyen:
Merk. Den viste listen over regioner er unik for hvert land, men den avhenger ikke av valget i den første rullegardinlisten.
Opprett en tredje rullegardin avhengig av de to første listene
Hvis du trenger å lage en rullegardinmeny som avhenger av valgene både i den første og andre rullegardinlisten, fortsett på denne måten :
- Lag flere sett med navngitte områder, og navngi dem for ordkombinasjonene i de to første rullegardinlistene dine. For eksempel har du Mango, Appelsiner, etc. på den første listen og India, Brasil, etc. på den andre.Deretter oppretter du navngitte områder MangoIndia , MangoBrazil , OrangesIndia , OrangesBrazil osv. Disse navnene skal ikke inneholde understreking eller andre tilleggstegn .
=INDIRECT(SUBSTITUTE(A2&B2," ",""))
Hvor A2 og B2 inneholder henholdsvis den første og den andre rullegardinmenyen.
Som et resultat blir din tredje slipp -nedlisten vil vise regionene som tilsvarer frukt og land valgt i de to første rullegardinlistene.
Dette er den enkleste måten å lage overlappende rullegardinbokser i Excel. Denne metoden har imidlertid en rekke begrensninger.
Begrensninger ved denne tilnærmingen:
- Elementene i den primære rullegardinlisten må bestå av ett ord innganger. Se hvordan du oppretter rullegardinlister med flere ord.
- Denne metoden fungerer ikke hvis oppføringene i hovedrullegardinlisten din inneholder tegn som ikke er tillatt i områdenavn, for eksempel bindestreken ( -), og-tegnet (&), osv. Løsningen er å lage en dynamisk kaskade-rullegardin som ikke har denne begrensningen.
- Rullegardinmenyer opprettet på denne måten oppdateres ikke automatisk, dvs. du må endre de navngitte områdenereferanser hver gang du legger til eller fjerner elementer i kildelistene. For å komme over denne begrensningen, prøv å lage en dynamisk rullegardinliste.
Opprett rullegardinlister med flere ord
De INDIREKTE formlene som vi brukte i eksemplet ovenfor kan kun håndtere ettordselementer. For eksempel refererer formelen =INDIREKTE(A2) indirekte til celle A2 og viser det navngitte området nøyaktig med samme navn som i den refererte cellen. Mellomrom er imidlertid ikke tillatt i Excel-navn, og det er grunnen til at denne formelen ikke vil fungere med navn med flere ord.
Løsningen er å bruke INDIREKTE-funksjonen i kombinasjon med ERSTATT, slik vi gjorde da vi opprettet en 3. dropdown.
Anta at du har Vannmelon blant produktene. I dette tilfellet navngir du en liste over vannmeloneksportører med ett ord uten mellomrom - Vannmelon .
Deretter, for den andre rullegardinmenyen, bruker du Excel-datavalidering med følgende formel som fjerner mellomrom fra navnet i celle A2:
=INDIRECT(SUBSTITUTE(A2," ",""))
Hvordan forhindre endringer i den primære rullegardinlisten
Se for deg følgende scenario . Brukeren din har gjort valgene i alle rullegardinlistene, så ombestemte de seg, gikk tilbake til den første listen og valgte et annet element. Resultatet er at 1. og 2. valg ikke samsvarer. For å forhindre at dette skjer, kan det være lurt å blokkere eventuelle endringer i den første slipp-nedlisten så snart et valg er gjort i den andre listen.
For å gjøre dette, når du oppretter den første rullegardinmenyen, bruk en spesiell formel som vil sjekke om en oppføring er valgt i den andre rullegardinmenyen:
=IF(B2="", Fruit, INDIRECT("FakeList"))
Der B2 inneholder den andre rullegardinmenyen, " Fruit " er navnet på listen som vises i den første rullegardinmenyen, og " FakeList " er et falskt navn som ikke eksisterer.
Nå, hvis et element er valgt i den andre rullegardinlisten, vil ingen valg være tilgjengelige når bruker klikker på pilen ved siden av den første listen.
Opprette dynamiske rullegardinlister i Excel
Den største fordelen med en dynamisk Excel-avhengig rullegardinliste er at du står fritt til å rediger kildelistene, og rullegardinboksene dine blir oppdatert med en gang. Å lage dynamiske rullegardinmenyer krever selvfølgelig litt mer tid og mer komplekse formler, men jeg tror dette er en verdig investering fordi når de er satt opp, er slike rullegardinmenyer en virkelig glede å jobbe med.
Som med nesten alt i Excel, kan du oppnå det samme resultatet på flere måter. Spesielt kan du lage en dynamisk rullegardin ved å bruke en kombinasjon av OFFSET-, INDIREKTE- og COUNTA-funksjoner eller en mer spenstig INDEX MATCH-formel. Sistnevnte er min foretrukne måte fordi det gir en rekke fordeler, hvorav de viktigste er:
- Du må bare opprette 3 navngitte områder, uansett hvordanmange elementer er det i hoved- og avhengige lister.
- Listene dine kan inneholde elementer med flere ord og eventuelle spesielle tegn.
- Antallet oppføringer kan variere i hver kolonne.
- Oppføringenes sorteringsrekkefølge spiller ingen rolle.
- Til slutt er det veldig enkelt å vedlikeholde og endre kildelistene.
Ok, nok teori, la oss komme til praksis.
1. Organiser kildedataene dine i en tabell
Som vanlig er det første du må gjøre å skrive ned alle valgene for rullegardinlistene dine i et regneark. Denne gangen skal du lagre kildedataene i en Excel-tabell. For dette, når du har lagt inn dataene, velg alle oppføringene og trykk Ctrl + T eller klikk Sett inn -fanen > Tabell . Skriv deretter inn navnet på tabellen i boksen Tabellnavn .
Den mest praktiske og visuelle tilnærmingen er å lagre elementene for den første rullegardinmenyen som tabelloverskrifter, og elementene for den avhengige rullegardinlisten som tabelldata. Skjermbildet nedenfor illustrerer strukturen til tabellen min, kalt exporters_tbl - fruktnavnene er tabelloverskrifter og en liste over eksportland legges til under det tilsvarende fruktnavnet.
2. Lag Excel-navn
Nå som kildedataene dine er klare, er det på tide å sette opp navngitte referanser som dynamisk vil hente den riktige listen fra tabellen.
2.1. Legg til et navn for tabellens overskriftsrad (hovedrullegardin)
For å opprette ennytt navn som refererer til tabelloverskriften, velg den og klikk deretter enten Formler > Navnebehandling > Ny eller trykk Ctrl + F3 .
Microsoft Excel vil bruke det innebygde tabellreferansesystemet for å lage navnet på tabellnavn[#Headers] -mønsteret.
Gi det litt meningsfylt og lett å huske navn, f.eks. fruktliste , og klikk OK .
2.2. Opprett et navn for cellen som inneholder den første rullegardinlisten
Jeg vet at du ikke har noen rullegardinliste ennå :) Men du må velge cellen som skal være vert for den første rullegardinlisten og lage et navn for den celle nå fordi du må inkludere dette navnet i det tredje navnets referanse.
For eksempel er min første rullegardinboks i celle B1 på ark 2, så jeg lager et navn for det, noe enkelt og selvforklarende som frukt :
Tips. Bruk passende cellereferanser for å kopiere rullegardinlister på tvers av regnearket.
Vennligst les de følgende avsnittene nøye fordi dette er et veldig nyttig tips du ikke vil gå glipp av . Tusen takk til Karen for at du la det ut!
Hvis du planlegger å kopiere rullegardinlistene dine til andre celler, bruk blandede cellereferanser når du oppretter navnet på cellen(e) med den første rullegardinlisten din liste.
For at rullegardinmenyene skal kopieres riktig til andre kolonner (dvs. til høyre), bruk relativ kolonne (uten $