Hoe om 'n afhanklike (kaskade) aftreklys in Excel te maak

  • Deel Dit
Michael Brown

'n Rukkie gelede het ons begin om die vermoëns van Excel-datavalidering te verken en geleer hoe om 'n eenvoudige aftreklys in Excel te skep wat gebaseer is op 'n komma-geskeide lys, reeks selle of 'n benoemde reeks.

Vandag gaan ons hierdie kenmerk in-diepte ondersoek en leer hoe om trapsgewyse aftreklyste te skep wat keuses vertoon afhangende van die waarde wat in die eerste aftreklys gekies is. Om dit anders te stel, sal ons 'n Excel-data valideringslys maak gebaseer op die waarde van 'n ander lys.

    Hoe om veelvuldige afhanklike aftreklys in Excel te skep

    Maak 'n multi -vlakafhanklike aftreklyste in Excel is maklik. Al wat jy nodig het, is 'n paar genoemde reekse en die INDIREKTE formule. Hierdie metode werk met alle weergawes van Excel 365 - 2010 en vroeër.

    1. Tik die inskrywings vir die aftreklyste

    Tik eers die inskrywings wat jy in die aftreklyste wil laat verskyn, elke lys in 'n aparte kolom. Ek skep byvoorbeeld 'n deurlopende aftreklys van vrugte-uitvoerders en kolom A van my bronblad ( Vrugte ) sluit die items van die eerste aftreklys in en 3 ander kolomme lys die items vir die afhanklike aftreklys.

    2. Skep benoemde reekse

    Nou moet jy name vir jou hooflys en vir elk van die afhanklike lyste skep. Jy kan dit doen deur 'n nuwe naam by te voeg in die Naambestuurder -venster ( Formules -oortjie > Naambestuurder > Nuut) of dieteken) en absolute ry (met $) verwysings soos = Blad2!B$1.

    As gevolg hiervan sal B1 se afhanklike aftreklys in sel B2 verskyn; C1 se afhanklike aftreklys sal in C2 vertoon word, ensovoorts.

    En as jy van plan is om die aftreklys na ander rye te kopieer (d.w.s. kolom), gebruik dan absolute kolom (met $) en relatiewe ry (sonder $) koördinate soos = Blad2!$B1.

    Om 'n aftreksel in enige rigting, gebruik 'n relatiewe verwysing (sonder die $-teken) soos = Blad2!B1.

    2.3. Skep 'n naam om die afhanklike spyskaart se inskrywings op te haal

    In plaas daarvan om unieke name vir elk van die afhanklike lyste op te stel soos ons in die vorige voorbeeld gedoen het, gaan ons een benoemde formule skep wat word nie aan enige spesifieke sel of 'n reeks selle toegeken nie. Dit sal die korrekte lys van inskrywings vir die tweede aftreklys ophaal, afhangende van watter keuse in die eerste aftreklys gemaak is. Die grootste voordeel van die gebruik van hierdie formule is dat jy nie nuwe name hoef te skep terwyl jy nuwe inskrywings by die eerste aftreklys voeg nie - een benoemde formule dek hulle almal.

    Jy skep 'n nuwe Excel-naam met hierdie formule:

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

    Waar:

    • exporters_tbl - die naam van die tabel (geskep in stap 1);
    • fruit - die naam van die sel wat die eerste aftreklys bevat (geskep in stap 2.2);
    • fruit_list - die naam wat na die tabel se kopry verwys (geskep instap 2.1).

    Ek het dit 'n naam gegee uitvoerders_lys , soos jy in die skermkiekie hieronder sien.

    Wel , jy het reeds die grootste deel van die werk gedoen! Voordat jy by die laaste stap kom, kan dit 'n goeie idee wees om die Naambestuurder oop te maak ( Ctrl + F3 ) en die name en verwysings te verifieer:

    3. Stel Excel Data Validation op

    Dit is eintlik die maklikste deel. Met die twee benoemde formules in plek stel jy Datavalidering op die gewone manier op ( Data -oortjie > Datavalidering ).

    • Vir die eerste aftreklys, in die Bron-blokkie, voer =vrugtelys in (die naam geskep in stap 2.1).
    • Vir die afhanklike aftreklys, voer =uitvoerderslys <9 in>(die naam wat in stap 2.3 geskep is).

    Klaar! Jou dinamiese aftrekkieslys is voltooi en sal outomaties opgedateer word deur die veranderinge wat jy aan die brontabel aangebring het, te weerspieël.

    Hierdie dinamiese Excel-aftreklys, perfek in alle ander opsigte , het een tekortkoming - as die kolomme van jou brontabel 'n ander aantal items bevat, sal die leë rye in jou spyskaart soos volg verskyn:

    Sluit leë rye uit van die dynamic cascading dropdown

    As jy enige leë lyne in jou aftrekblokkies wil skoonmaak, sal jy 'n stap verder moet neem en die INDEX / MATCH formule verbeter wat gebruik word om die afhanklike dinamiese aftreklys te skep.

    Die idee is om te gebruik2 INDEX-funksies, waar die eerste die boonste linker sel kry en die tweede die onderste regter sel van die reeks gee, of die OFFSET funksie met geneste INDEX en COUNTA. Die gedetailleerde stappe volg hieronder:

    1. Skep twee bykomende name

    Om nie die formule te lywig te maak nie, skep eers 'n paar helpername met die volgende eenvoudige formules:

    • 'n Naam genaamd col_num om die geselekteerde kolomnommer te verwys:

      =MATCH(fruit,fruit_list,0)

    • 'n Naam genaamd hele_kol om na die geselekteerde kolom te verwys (nie die kolom se nommer nie, maar die hele kolom):

      =INDEX(exporters_tbl,,col_num)

    In die formules hierbo is exporters_tbl jou brontabel se naam, fruit is die naam van die sel wat die eerste aftreklys bevat, en fruit_list is die naam wat na die tabel se kopry verwys.

    2. Skep die benoemde verwysing vir die afhanklike aftreklys

    Volgende, gebruik enige van die onderstaande formules om 'n nuwe naam te skep (kom ons noem dit exporters_list2 ) om saam met die afhanklike aftreklys te gebruik:

    =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. Pas Data Validation toe

    Selekteer laastens die sel wat die afhanklike aftreklys bevat en pas Data Validation toe deur = exporters_list2 (die naam wat in die vorige stap geskep is) in die Bron in te voer boks.

    Die skermkiekie hieronder wys die gevolglike dinamiese aftreklys in Excel waar alle leë lyne weg is!

    Let wel. Wanneer u met dinamiese kaskade-aftreklyste werkgeskep met die bogenoemde formules, niks verhoed die gebruiker om die waarde in die eerste aftreklys te verander nadat die keuse in die tweede kieslys gemaak is nie, gevolglik kan die keuses in die primêre en sekondêre aftreklys nie ooreenstem nie. U kan veranderinge in die eerste blokkie blokkeer nadat 'n keuse in die tweede een gemaak is deur óf VBA óf komplekse formules te gebruik wat in hierdie tutoriaal voorgestel word.

    Dit is hoe jy 'n Excel-data-valideringslys skep wat gebaseer is op die waardes van 'n ander lys. Voel asseblief vry om ons voorbeeldwerkboeke af te laai om die deurlopende aftreklyste in aksie te sien. Dankie dat jy gelees het!

    Oefenwerkboek om af te laai

    Cascading Dropdown Sample 1- maklike weergawe

    Cascading Dropdown Voorbeeld 2 - gevorderde weergawe sonder spasies

    naam direk in die Naamkassie.

    Let wel. Let asseblief daarop dat as jou eerste ry 'n soort kolomopskrif is soos jy in die skermkiekie hierbo sien, jy dit nie in die genoemde reeks sal insluit nie.

    Vir die gedetailleerde stap-vir-stap-instruksies sien asseblief Hoe om 'n naam in Excel te definieer.

    Dinge om te onthou:

    1. Die items om verskyn in die eerste aftreklys moet eenwoordinskrywings wees, bv. Appelkoos , Mango , Lemoene . As jy items het wat uit twee, drie of meer woorde bestaan, sien asseblief Hoe om 'n deurlopende aftreklys met multi-woord-inskrywings te skep.
    2. Die name van die afhanklike lyste moet presies dieselfde wees as die ooreenstemmende inskrywing in hoof. lys. Byvoorbeeld, die afhanklike lys wat vertoon moet word wanneer " Mango " uit die eerste aftreklys gekies word, moet Mango genoem word.

    Wanneer klaar , wil jy dalk Ctrl+F3 druk om die Naambestuurder -venster oop te maak en te kyk of al die lyste korrekte name en verwysings het.

    3 . Maak die eerste (hoof) aftreklys

    1. In dieselfde of in 'n ander sigblad, kies 'n sel of verskeie selle waarin jy wil hê jou primêre aftreklys moet verskyn.
    2. Gaan na die Data -oortjie, klik Datavalidering en stel 'n aftreklys op gebaseer op 'n benoemde reeks op die gewone manier deur Lys onder te kies Laat toe en voer die reeksnaam in die Bron -kassie.

    Vir die gedetailleerde stappe, sien asseblief Maak 'n aftreklys gebaseer op 'n benoemde reeks.

    As gevolg hiervan sal jy 'n aftrekkieslys in jou werkblad hê soortgelyk aan hierdie:

    4. Skep die afhanklike aftreklys

    Kies 'n sel(se) vir jou afhanklike aftreklys en pas Excel Data Validation weer toe soos beskryf in die vorige stap. Maar hierdie keer, in plaas van die reeks se naam, voer jy die volgende formule in die Bron -veld in:

    =INDIRECT(A2)

    Waar A2 die sel met jou eerste (primêre) is aftreklys.

    As sel A2 tans leeg is, sal jy die foutboodskap kry " Die Bron evalueer tans na 'n fout. Wil jy voortgaan ? "

    Klik veilig Ja , en sodra jy 'n item uit die eerste aftreklys kies, sal jy die inskrywings wat daarmee ooreenstem in die tweede, afhanklike , aftreklys.

    5. Voeg 'n derde afhanklike aftreklys by (opsioneel)

    Indien nodig, kan jy 'n 3de deurlopende aftreklys byvoeg wat óf afhang van die keuse in die 2de aftreklys óf van die keuses in die eerste twee aftreklys.

    Stel 3de aftreklys op wat van 2de lys afhang

    Jy kan die aftreklys van hierdie tipe op dieselfde manier maak as wat ons pas 'n tweede afhanklike aftreklys gemaak het. af spyskaart. Onthou net die 2 belangrike dinge wat hierbo bespreek is, waarvoor noodsaaklik isdie korrekte werk van jou kaskade-aftreklyste.

    As jy byvoorbeeld 'n lys streke in kolom C wil vertoon, afhangend van watter land in kolom B gekies is, skep jy 'n lys streke vir elke land en noem dit na die land se naam, presies soos die land in die tweede aftreklyste verskyn. Byvoorbeeld, 'n lys Indiese streke moet "Indië" genoem word, 'n lys van Sjinese streke - "China", ensovoorts.

    Daarna kies jy 'n sel vir die 3de aftreklys (C2 in ons geval) en pas Excel Data Validation toe met die volgende formule (B2 is die sel met die tweede aftreklys wat 'n lys lande bevat):

    =INDIRECT(B2)

    Nou, elke keer as jy Indië kies onder die lys lande in kolom B, sal jy die volgende keuses in die derde aftreklys hê:

    Let wel. Die lys streke wat vertoon word, is uniek vir elke land, maar dit hang nie af van die keuse in die eerste aftreklys nie.

    Skep 'n derde aftreklys afhanklik van die eerste twee lyste

    As jy 'n deurlopende aftreklys moet skep wat afhang van die keuses beide in die eerste en tweede aftreklyste, gaan dan voort op hierdie manier :

    1. Skep bykomende stelle benoemde reekse, en noem hulle vir die woordkombinasies in jou eerste twee aftreklys. Byvoorbeeld, jy het Mango, Lemoene, ens. in die 1ste lys en Indië, Brasilië, ens. in die 2de.Dan skep jy benoemde reekse MangoIndia , MangoBrazil , OrangesIndia , OrangesBrazil , ens. Hierdie name moet nie onderstrepe of enige ander bykomende karakters bevat nie. .

  • Pas Excel-datavalidering toe met die INDIREKTE PLAASVERVANGER-formule wat die name van die inskrywings in die eerste twee kolomme aaneenskakel en die spasies van die name verwyder. Byvoorbeeld, in sel C2 sal die datavalideringsformule wees:
  • =INDIRECT(SUBSTITUTE(A2&B2," ",""))

    Waar A2 en B2 onderskeidelik die eerste en tweede aftreklys bevat.

    As gevolg hiervan, jou 3de druppel -down list sal die streke vertoon wat ooreenstem met die Vrugte en Land wat in die eerste 2 aftreklyste gekies is.

    Dit is die maklikste manier om kaskade-aftrekkies in Excel te skep. Hierdie metode het egter 'n aantal beperkings.

    Beperkings van hierdie benadering:

    1. Die items in jou primêre aftreklys moet een-woord wees inskrywings. Sien hoe om deurlopende aftreklyste met multi-woord-inskrywings te skep.
    2. Hierdie metode sal nie werk as die inskrywings in jou hoofaftreklys karakters bevat wat nie in reeksname toegelaat word nie, soos die koppelteken ( -), ampersand (&), ens. Die oplossing is om 'n dinamiese kaskade-aftreklys te skep wat nie hierdie beperking het nie.
    3. Aftrekkieslyste wat op hierdie manier geskep word, word nie outomaties opgedateer nie, dit wil sê jy sal moet verander die benoemde reekse'verwysings elke keer as jy items in die bronnelyste byvoeg of verwyder. Om oor hierdie beperking te kom, probeer om 'n dinamiese trap-aftreklys te maak.

    Skep kaskade-aftreklyste met multiwoordinskrywings

    Die INDIREKTE formules wat ons in die voorbeeld gebruik het hierbo kan slegs eenwoorditems hanteer. Byvoorbeeld, die formule =INDIREKTE(A2) verwys indirek na sel A2 en vertoon die benoemde reeks presies met dieselfde naam as in die verwysde sel. Spasies word egter nie in Excel-name toegelaat nie, en daarom sal hierdie formule nie met multiwoordname werk nie.

    Die oplossing is om die INDIREKTE funksie in kombinasie met PLAASVERVANG te gebruik soos ons gedoen het toe ons 'n 3de skep dropdown.

    Gestel jy het Waterspanspek onder die produkte. In hierdie geval noem jy 'n lys van waatlemoenuitvoerders met een woord sonder spasies - Waterlemoen .

    Dan, vir die tweede aftreklys, pas Excel Data Validation toe met die volgende formule wat die spasies van die naam in sel A2:

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

    Hoe om veranderinge in die primêre aftreklys te voorkom

    Stel jou die volgende scenario voor . Jou gebruiker het die keuses in al die aftreklyste gemaak, toe het hulle van plan verander, teruggegaan na die eerste lys en 'n ander item gekies. Die gevolg is dat die 1ste en 2de keuses nie ooreenstem nie. Om te voorkom dat dit gebeur, wil jy dalk enige veranderinge in die eerste drop-aflys sodra 'n keuse in die tweede lys gemaak is.

    Om dit te doen, wanneer die eerste aftreklys geskep word, gebruik 'n spesiale formule wat sal kontroleer of enige inskrywing in die tweede aftreklys gekies is:

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

    Waar B2 die tweede aftreklys bevat, is " Fruit " die naam van die lys wat in die eerste aftreklys verskyn, en " FakeList " is enige vals naam wat nie bestaan ​​nie.

    Nou, as enige item in die 2de aftreklys gekies word, sal geen keuses beskikbaar wees wanneer die gebruiker klik op die pyltjie langs die eerste lys.

    Skep dinamiese kaskade-aftreklyste in Excel

    Die grootste voordeel van 'n dinamiese Excel-afhanklike aftreklys is dat jy vry is om wysig die bronnelyste en jou aftrekblokkies sal dadelik opgedateer word. Natuurlik verg die skep van dinamiese aftrekkies 'n bietjie meer tyd en meer komplekse formules, maar ek glo dit is 'n waardige belegging, want sodra dit opgestel is, is sulke aftrekkieslyste 'n ware plesier om mee te werk.

    Soos met amper enigiets in Excel, kan jy dieselfde resultaat op verskeie maniere bereik. In die besonder, kan jy 'n dinamiese aftreklys skep deur 'n kombinasie van OFFSET, INDIREKTE en COUNTA funksies of 'n meer veerkragtige INDEX MATCH formule te gebruik. Laasgenoemde is my voorkeur manier omdat dit talle voordele bied, waarvan die mees noodsaaklike is:

    1. Jy moet slegs 3 benoemde reekse skep, maak nie saak hoebaie items is daar in die hoof- en afhanklike lyste.
    2. Jou lyste kan multi-woord-items en enige spesiale tekens bevat.
    3. Die aantal inskrywings kan in elke kolom verskil.
    4. Die inskrywings se sorteervolgorde maak nie saak nie.
    5. Laastens is dit baie maklik om die bronnelyste in stand te hou en te wysig.

    Oukei, genoeg teorie, kom ons begin oefen.

    1. Organiseer jou brondata in 'n tabel

    Soos gewoonlik is die eerste ding wat jy moet doen om al die keuses vir jou aftreklyste in 'n werkblad neer te skryf. Hierdie keer sal jy die brondata in 'n Excel-tabel moet stoor. Hiervoor, sodra jy die data ingevoer het, kies al die inskrywings en druk Ctrl + T of klik Voeg in oortjie > Tabel . Tik dan 'n naam van jou tabel in die Tabelnaam -blokkie.

    Die gerieflikste en visuele benadering is om die items vir die eerste aftreklys as tabelopskrifte te stoor, en die items vir die afhanklike aftreklys as tabeldata. Die skermkiekie hieronder illustreer die struktuur van my tabel, genaamd exporters_tbl - die vrugtename is tabelopskrifte en 'n lys van uitvoerlande word bygevoeg onder die ooreenstemmende vrugtenaam.

    2. Skep Excel-name

    Noudat jou brondata gereed is, is dit tyd om benoemde verwysings op te stel wat dinamies die korrekte lys uit jou tabel sal haal.

    2.1. Voeg 'n naam by vir die tabel se kopry (hoofaftreklys)

    Om 'nnuwe naam wat na die tabelopskrif verwys, kies dit en klik dan óf Formules > Naambestuurder > Nuwe óf druk Ctrl + F3 .

    Microsoft Excel sal die ingeboude tabelverwysingstelsel gebruik om die naam van die tabelnaam[#Headers] -patroon te skep.

    Gee dit 'n bietjie betekenisvolle en maklik om te onthou naam, bv. vrugtelys , en klik OK .

    2.2. Skep 'n naam vir die sel wat die eerste aftreklys bevat

    Ek weet dat jy nog geen aftreklys het nie :) Maar jy moet die sel kies om jou eerste aftreklys te huisves en 'n naam daarvoor skep sel nou, want jy sal hierdie naam by die derde naam se verwysing moet insluit.

    Byvoorbeeld, my eerste aftrekblokkie is in sel B1 op Blad 2, so ek skep 'n naam daarvoor, iets eenvoudigs en selfverduidelikend soos vrugte :

    Wenk. Gebruik toepaslike selverwysings om aftreklyste te oor die werkblad te kopieer.

    Lees asseblief die volgende paar paragrawe noukeurig, want dit is 'n baie nuttige wenk wat jy nie wil mis nie . Baie dankie aan Karen dat jy dit geplaas het!

    As jy van plan is om jou aftreklyste na ander selle te kopieer, gebruik dan gemengde selverwysings wanneer jy die naam vir die sel(s) met jou eerste aftreklys skep lys.

    Vir die aftreklys om korrek na ander kolomme (d.w.s. regs) te kopieer, gebruik relatiewe kolom (sonder die $

    Michael Brown is 'n toegewyde tegnologie-entoesias met 'n passie om komplekse prosesse te vereenvoudig deur sagteware-instrumente te gebruik. Met meer as 'n dekade se ondervinding in die tegnologiebedryf, het hy sy vaardighede in Microsoft Excel en Outlook, sowel as Google Sheets en Docs, opgeskerp. Michael se blog is toegewy daaraan om sy kennis en kundigheid met ander te deel, en verskaf maklik-om-te volg wenke en tutoriale vir die verbetering van produktiwiteit en doeltreffendheid. Of jy nou 'n ervare professionele persoon of 'n beginner is, Michael se blog bied waardevolle insigte en praktiese raad om die meeste uit hierdie noodsaaklike sagteware-nutsmiddels te kry.