Hur man gör en beroende (kaskad) rullgardinslista i Excel

  • Dela Detta
Michael Brown

För ett tag sedan började vi utforska möjligheterna med Excel-datavalidering och lärde oss hur man skapar en enkel rullgardinslista i Excel baserat på en kommaseparerad lista, ett cellintervall eller ett namngivet intervall.

I dag ska vi undersöka den här funktionen på djupet och lära oss hur man skapar kaskadlistor som visar valmöjligheter beroende på det värde som valts i den första rullgardinsmenyn. Med andra ord kommer vi att skapa en Excel-lista för datavalidering som baseras på värdet i en annan lista.

    Hur man skapar flera beroende dropdowns i Excel

    Det är enkelt att göra en beroende rullgardinslista med flera nivåer i Excel. Allt du behöver är några namngivna intervall och formeln INDIRECT. Den här metoden fungerar med alla versioner av Excel 365 - 2010 och tidigare.

    1. Skriv in posterna för rullgardinslistorna.

    Skriv först in de poster som du vill ska visas i rullgardinslistorna, varje lista i en separat kolumn. Jag skapar till exempel en rullgardinslista med frukt-exportörer i kaskadform och kolumn A i mitt källblad ( Frukt ) innehåller objekt i den första rullgardinsmenyn och tre andra kolumner innehåller objekt för de beroende rullgardinsmenyerna.

    2. Skapa namngivna områden

    Nu måste du skapa namn för din huvudlista och för alla beroende listor. Du kan göra detta antingen genom att lägga till ett nytt namn i Namn chef fönstret ( Formler flik> Name Manager> Ny) eller genom att skriva namnet direkt i Namnruta .

    Observera att om din första rad är en slags kolumnrubrik som du ser i skärmdumpen ovan, ska du inte inkludera den i det namngivna intervallet.

    Detaljerade steg-för-steg-instruktioner finns i Hur man definierar ett namn i Excel.

    Saker att komma ihåg:

    1. De objekt som ska visas i den första rullgardinslistan måste vara enordiga, t.ex. Aprikos , Mango , Apelsiner Om du har objekt som består av två, tre eller fler ord, se Hur man skapar en rullgardinsmeny med flera ord.
    2. Namnen på de beroende listorna måste vara exakt desamma som den motsvarande posten i huvudlistan. Till exempel, den beroende lista som ska visas när " Mango " som väljs i den första rullgardinslistan ska heta Mango .

    När du är klar kan du trycka på Ctrl+F3 för att öppna Namn chef och kontrollera att alla listor har korrekta namn och referenser.

    3. Gör den första (huvudsakliga) rullgardinslistan.

    1. I samma eller ett annat kalkylblad markerar du en eller flera celler där du vill att den primära rullgardinslistan ska visas.
    2. Gå till Uppgifter klickar du på fliken Validering av data och skapa en rullgardinslista baserad på ett namngivet intervall på det vanliga sättet genom att välja Lista under Tillåt och ange namnet på området i fältet Källa box.

    Detaljerade steg finns i Skapa en rullgardinslista baserad på ett namngivet intervall.

    Resultatet blir en rullgardinsmeny i arbetsbladet som liknar den här:

    4. Skapa den beroende rullgardinslistan

    Välj en eller flera celler för din beroende rullgardinsmeny och tillämpa Excel Data Validation igen enligt beskrivningen i föregående steg. Men den här gången anger du följande formel i fältet Källa fält:

    =INDIRECT(A2)

    Där A2 är cellen med den första (primära) rullgardinslistan.

    Om cell A2 för närvarande är tom får du felmeddelandet " Källan är för närvarande ett fel. Vill du fortsätta? "

    Klicka säkert på Ja När du väljer ett objekt i den första rullgardinsmenyn visas de poster som motsvarar det i den andra, beroende, rullgardinsmenyn.

    5. Lägg till en tredje beroende rullgardinslista (valfritt).

    Om det behövs kan du lägga till en tredje rullgardinsmeny i kaskadform som antingen beror på valet i den andra rullgardinsmenyn eller på valen i de två första rullgardinsmenyerna.

    Skapa en tredje rullgardinsmeny som beror på den andra listan

    Du kan skapa en rullgardinslista av den här typen på samma sätt som vi just har gjort en andra beroende rullgardinsmeny. Kom bara ihåg de två viktiga saker som vi diskuterade ovan och som är avgörande för att dina rullgardinslistor med kaskadindelning ska fungera på rätt sätt.

    Om du till exempel vill visa en lista med regioner i kolumn C beroende på vilket land som valts i kolumn B, skapar du en lista med regioner för varje land och namnger den efter landets namn, precis som landet visas i andra rullgardinslistorna. En lista med indiska regioner ska till exempel heta "Indien", en lista med kinesiska regioner - "Kina", och så vidare.

    Därefter väljer du en cell för den tredje rullgardinsmenyn (C2 i vårt fall) och tillämpar Excel-datavalidering med följande formel (B2 är cellen med den andra rullgardinsmenyn som innehåller en lista med länder):

    =INDIRECT(B2)

    Varje gång du väljer Indien under listan över länder i kolumn B har du följande valmöjligheter i den tredje rullgardinsmenyn:

    Observera: Listan över regioner som visas är unik för varje land, men den beror inte på valet i den första rullgardinslistan.

    Skapa en tredje rullgardinslista som är beroende av de två första listorna.

    Om du behöver skapa en kaskad-rullgardinsmeny som beror på valen både i den första och den andra rullgardinslistan, ska du gå tillväga på det här sättet:

    1. Skapa ytterligare uppsättningar av namngivna intervall och namnge dem efter ordkombinationerna i de två första rullgardinsalternativen. Du har till exempel Mango, apelsiner, etc. i den första listan och Indien, Brasilien osv. i den andra. Sedan skapar du namngivna områden MangoIndia , MangoBrazil , ApelsinerIndien , ApelsinerBrasilien Dessa namn får inte innehålla understrykningar eller andra tilläggstecken.

  • Tillämpa Excel-datavalidering med formeln INDIRECT SUBSTITUTE som sammanfogar namnen på posterna i de två första kolumnerna och tar bort mellanslag från namnen. I cell C2 skulle formeln för datavalidering till exempel vara:
  • =INDIRECT(SUBSTITUTE(A2&B2," ",""))

    Där A2 och B2 innehåller den första respektive andra rullgardinsmenyn.

    Som ett resultat kommer den tredje rullgardinslistan att visa de regioner som motsvarar Frukt och Land som valts i de två första rullgardinslistorna.

    Det här är det enklaste sättet att skapa rullgardinsrutor i Excel, men det finns ett antal begränsningar.

    Begränsningar med detta tillvägagångssätt:

    1. Elementen i den primära rullgardinslistan måste vara poster med ett ord. Se hur du skapar rullgardinslistor i kaskad med poster med flera ord.
    2. Den här metoden fungerar inte om posterna i din huvudsakliga rullgardinslista innehåller tecken som inte är tillåtna i intervallnamn, t.ex. bindestreck (-), ampersand (&) etc. Lösningen är att skapa en dynamisk rullgardinslista i kaskadform som inte har den här begränsningen.
    3. Drop-down-menyer som skapas på det här sättet uppdateras inte automatiskt, dvs. du måste ändra referenserna till de namngivna områdena varje gång du lägger till eller tar bort objekt i källistorna. För att komma över den här begränsningen kan du försöka skapa en dynamisk kaskadlistrering av drop-down-listor.

    Skapa rullgardinslistor i kaskadform med poster med flera ord

    INDIRECT-formlerna som vi använde i exemplet ovan kan bara hantera objekt med ett ord. Formeln =INDIRECT(A2) hänvisar till exempel indirekt till cell A2 och visar det namngivna intervallet med exakt samma namn som finns i den refererade cellen. Men mellanslag tillåts inte i Excel-namn, vilket är anledningen till att den här formeln inte fungerar med namn med flera ord.

    Lösningen är att använda INDIRECT-funktionen i kombination med SUBSTITUTE som vi gjorde när vi skapade en tredje rullgardinsmeny.

    Anta att du har Vattenmelon I det här fallet kan du ange en lista över exportörer av vattenmelon med ett ord utan mellanslag - Vattenmelon .

    För den andra rullgardinsmenyn tillämpar du Excel-datavalidering med följande formel som tar bort mellanslag från namnet i cell A2:

    =INDIREKT(SUBSTITUT(A2," ",""))

    Hur man förhindrar ändringar i den primära rullgardinslistan

    Föreställ dig följande scenario: Användaren har gjort valen i alla listorna, men ändrade sig sedan, gick tillbaka till den första listan och valde ett annat objekt. Resultatet är att första och andra valen inte stämmer överens. För att förhindra detta kan du blockera alla ändringar i den första listan så snart ett val görs i den andra listan.

    När du skapar den första rullgardinsmenyn använder du en särskild formel för att kontrollera om någon post är vald i den andra rullgardinsmenyn:

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

    Där B2 innehåller den andra rullgardinsmenyn, " Frukt " är namnet på den lista som visas i den första rullgardinsmenyn och " FakeList " är ett falskt namn som inte existerar.

    Om något objekt är valt i den andra rullgardinslistan kommer inga alternativ att finnas tillgängliga när användaren klickar på pilen bredvid den första listan.

    Skapa dynamiska rullgardinslistor med kaskadindelning i Excel

    Den största fördelen med en dynamisk Excel-beroende rullgardinslista är att du kan redigera källlistorna och att dina rullgardinslistor uppdateras i farten. Att skapa dynamiska rullgardinslistor kräver förstås lite mer tid och mer komplexa formler, men jag anser att det är en värd investering eftersom sådana rullgardinsmenyer, när de väl har skapats, är ett sant nöje att arbeta med.

    Som med nästan allt annat i Excel kan du uppnå samma resultat på flera olika sätt. Du kan skapa en dynamisk rullgardinsmeny med hjälp av en kombination av OFFSET-, INDIRECT- och COUNTA-funktionerna eller en mer motståndskraftig INDEX MATCH-formel. Jag föredrar den sistnämnda metoden eftersom den ger många fördelar, varav de viktigaste är:

    1. Du måste skapa endast tre namngivna intervall, oavsett hur många objekt som finns i huvud- och beroendeförteckningarna.
    2. Listorna kan innehålla objekt med flera ord och specialtecken.
    3. Antalet poster kan variera i varje kolumn.
    4. Posternas sorteringsordning spelar ingen roll.
    5. Slutligen är det mycket enkelt att underhålla och ändra källförteckningarna.

    Okej, nog med teori, låt oss börja med praktiken.

    1. Organisera dina källdata i en tabell.

    Som vanligt är det första du ska göra att skriva ner alla valmöjligheter för dina rullgardinslistor i ett kalkylblad. Den här gången ska du lagra källdata i en Excel-tabell. När du har skrivit in data markerar du alla poster och trycker på Ctrl + T eller klickar på Infoga flik> Tabell Skriv sedan ett namn på din tabell i fältet Tabellens namn box.

    Det mest praktiska och visuella sättet är att lagra objekten för den första rullgardinsmenyn som tabellrubriker och objekten för den beroende rullgardinsmenyn som tabelldata. Skärmavbildningen nedan illustrerar strukturen för min tabell, som heter exportörer_tbl - Fruktnamnen är tabellrubriker och en förteckning över exportländer har lagts till under motsvarande fruktnamn.

    2. Skapa Excel-namn

    Nu när dina källdata är klara är det dags att konfigurera namngivna referenser som dynamiskt hämtar rätt lista från tabellen.

    2.1. Lägg till ett namn för tabellens huvudrad (huvudlist).

    Om du vill skapa ett nytt namn som hänvisar till tabellhuvudet markerar du det och klickar sedan antingen på Formler > Namn chef > Ny eller tryck på Ctrl + F3 .

    Microsoft Excel använder det inbyggda referenssystemet för tabeller för att skapa namnet på den table_name[#Headers] mönster.

    Ge den ett meningsfullt namn som är lätt att komma ihåg, t.ex. frukt_lista och klicka på OK .

    2.2. Skapa ett namn för den cell som innehåller den första rullgardinslistan.

    Jag vet att du inte har någon rullgardinsmeny ännu :) Men du måste välja den cell som ska vara värd för din första rullgardinsmeny och skapa ett namn för den cellen nu, eftersom du kommer att behöva inkludera detta namn i det tredje namnets referens.

    Min första rullgardinsruta finns till exempel i cell B1 på blad 2, så jag skapar ett namn för den, något enkelt och självförklarande som frukt :

    Tips: Använd lämpliga cellreferenser för att kopiera rullgardinslistor över hela arbetsbladet.

    Läs de följande punkterna noga, för det här är ett mycket användbart tips som du inte vill missa. Tack till Karen för att hon publicerade det!

    Om du planerar att kopiera rullgardinslistorna till andra celler använder du blandade cellreferenser när du skapar namnet på cellen/cellerna med den första rullgardinslistan.

    För att rullgardinsmenyerna ska kunna kopieras korrekt till andra kolumner (dvs. till höger), använd relativa kolumnreferenser (utan $-tecken) och absoluta radreferenser (med $) som = Sheet2!B$1.

    Resultatet blir att B1:s beroende rullgardinslista visas i cell B2, C1:s beroende rullgardinslista visas i C2 och så vidare.

    Och om du planerar att kopiera rullgardinsmenyer till andra rader (dvs. nedåt i kolumnen), använd då absoluta kolumnkoordinater (med $) och relativa radkoordinater (utan $) som = Sheet2!$B1.

    Om du vill kopiera en rullgardinscell i vilken riktning som helst använder du en relativ referens (utan $-tecknet) som = Sheet2!B1.

    2.3. Skapa ett namn för att hämta de beroende menyernas poster.

    Istället för att skapa unika namn för varje beroende lista som vi gjorde i det föregående exemplet, skapar vi en namngiven formel som inte är kopplad till någon särskild cell eller ett område av celler. Den hämtar rätt lista med poster för den andra rullgardinslistan beroende på vilket val som görs i den första rullgardinslistan. Den största fördelen med att använda den här formeln är att du inte behöver skapa nya namn när du lägger till nya poster i den första rullgardinslistan - en namngiven formel täcker dem alla.

    Du skapar ett nytt Excel-namn med den här formeln:

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

    Var:

    • exportörer_tbl - namnet på tabellen (som skapades i steg 1);
    • frukt - namnet på den cell som innehåller den första rullgardinslistan (skapad i steg 2.2);
    • frukt_lista - det namn som hänvisar till tabellens huvudrad (som skapades i steg 2.1).

    Jag gav den ett namn exportörer_lista som du ser i skärmbilden nedan.

    Du har redan gjort den största delen av arbetet! Innan du går vidare till det sista steget kan det vara en bra idé att öppna namnhanteraren ( Ctrl + F3 ) och kontrollera namnen och referenserna:

    3. Konfigurera Excel-datavalidering

    Detta är faktiskt den enklaste delen. När de två namngivna formlerna är på plats kan du konfigurera datavalidering på vanligt sätt ( Uppgifter flik> Validering av uppgifter ).

    • I den första rullgardinslistan anger du i rutan Källa följande i rutan =fruktlista (det namn som skapades i steg 2.1).
    • I rullgardinslistan beroende anger du =lista över exportörer (det namn som skapades i steg 2.3).

    Färdiga! Din dynamiska rullgardinsmeny med kaskadindelning är klar och uppdateras automatiskt med de ändringar du gjort i källtabellen.

    Denna dynamiska Excel-rullgardinsmeny, som är perfekt i alla andra avseenden, har en brist - om kolumnerna i källtabellen innehåller olika antal objekt kommer de tomma raderna att visas i menyn så här:

    Uteslut tomma rader från den dynamiska rullgardinsmenyn med kaskadindelning

    Om du vill rensa bort alla tomma rader i dina rullgardinsrutor måste du ta ett steg längre och förbättra INDEX/MATCH-formeln som används för att skapa den beroende dynamiska rullgardinslistan.

    Tanken är att använda två INDEX-funktioner, där den första hämtar den övre vänstra cellen och den andra returnerar den nedre högra cellen i intervallet, eller OFFSET-funktionen med inbäddade INDEX och COUNTA. De detaljerade stegen följer nedan:

    1. Skapa två ytterligare namn

    För att inte göra formeln alltför omfattande skapar du först ett par hjälpnamn med följande enkla formler:

    • Ett namn som heter col_num för att hänvisa till det valda kolumnnumret:

      =MATCH(frukt,frukt_lista,0)

    • Ett namn som heter hela_kol för att referera till den markerade kolumnen (inte kolumnnumret, utan hela kolumnen):

      =INDEX(exporters_tbl,,col_num)

    I formlerna ovan, exportörer_tbl är källtabellens namn, frukt är namnet på den cell som innehåller den första rullgardinsmenyn och frukt_lista är det namn som hänvisar till tabellens rubrikrad.

    2. Skapa en namngiven referens för den beroende rullgardinsmenyn.

    Använd sedan någon av nedanstående formler för att skapa ett nytt namn (låt oss kalla det exportörer_lista2 ) som ska användas med den beroende rullgardinslistan:

    =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. Tillämpa datavalidering

    Slutligen markerar du cellen som innehåller den beroende rullgardinsmenyn och tillämpar datavalidering genom att skriva in = exportörer_lista2 (det namn som skapades i föregående steg)i Källa box.

    Skärmbilden nedan visar den dynamiska rullgardinsmenyn i Excel där alla tomma rader är borta!

    Observera: När du arbetar med dynamiska rullgardinslistor i kaskad som skapats med ovanstående formler finns det inget som hindrar användaren från att ändra värdet i den första rullgardinsmenyn efter att ha gjort ett val i den andra menyn, vilket kan leda till att valen i den primära och sekundära rullgardinsmenyn inte stämmer överens. Du kan blockera ändringar i den första lådan efter att ett val har gjorts i den andra med hjälp av antingen VBA ellerkomplexa formler som föreslås i den här handledningen.

    Så här skapar du en Excel-lista för datavalidering som baseras på värdena i en annan lista. Ladda gärna ner våra exempelarbetsböcker för att se kaskad-rullgardinslistorna i aktion. Tack för att du läste!

    Arbetsbok för övning för nedladdning

    Cascading Dropdown Sample 1- enkel version

    Cascading Dropdown Sample 2 - avancerad version utan blanksteg

    Michael Brown är en hängiven teknikentusiast med en passion för att förenkla komplexa processer med hjälp av mjukvaruverktyg. Med mer än ett decenniums erfarenhet inom teknikbranschen har han finslipat sina kunskaper i Microsoft Excel och Outlook, samt Google Sheets och Docs. Michaels blogg är tillägnad att dela med sig av sin kunskap och expertis med andra, och tillhandahåller lätta att följa tips och handledningar för att förbättra produktiviteten och effektiviteten. Oavsett om du är en erfaren proffs eller nybörjare, erbjuder Michaels blogg värdefulla insikter och praktiska råd för att få ut det mesta av dessa viktiga programvaruverktyg.