Használjon dinamikus tartományneveket az Excelben a rugalmas legördülő listákhoz

Az Excel(Excel) -táblázatok gyakran tartalmaznak cellák legördülő menüit az adatbevitel egyszerűsítése és/vagy szabványosítása érdekében. Ezek a legördülő menük az adatellenőrzési szolgáltatással jönnek létre, hogy megadják a megengedett bejegyzések listáját.

Egy egyszerű legördülő lista létrehozásához jelölje ki azt a cellát, amelybe az adatokat be kell írni, majd kattintson az Adatellenőrzés(Data Validation) elemre (az Adatok(Data) lapon), válassza az Adatellenőrzés(Data Validation) lehetőséget , válassza a Lista(List) lehetőséget (az Engedélyezés(Allow) alatt :), majd adja meg a listaelemeket (vesszővel elválasztva). ) a Forrás(Source) : mezőben (lásd az 1. ábrát).

Az ilyen típusú alap legördülő menüben a megengedett bejegyzések listája magán az adatellenőrzésen belül van megadva; ezért a lista módosításához a felhasználónak meg kell nyitnia és szerkesztenie kell az adatellenőrzést. Ez azonban nehéz lehet a tapasztalatlan felhasználók számára, vagy olyan esetekben, amikor a lehetőségek listája hosszú.

Egy másik lehetőség, hogy a listát egy elnevezett tartományba helyezzük a táblázaton belül(named range within the spreadsheet) , majd megadjuk a tartomány nevét (előszóban egyenlőségjellel) az adatellenőrzés Forrás : mezőjében (ahogyan a (Source)2. ábrán látható(Figure 2) ).

Ez a második módszer megkönnyíti a listában szereplő lehetőségek szerkesztését, de az elemek hozzáadása vagy eltávolítása problémás lehet. Mivel a megnevezett tartomány ( a példánkban a FruitChoices ) egy rögzített cellatartományra utal ($H$3:$H$10, ahogy az ábrán látható), ha további választási lehetőségeket adnak a H11 vagy az alatti cellákhoz, azok nem jelennek meg a legördülő listában. (mivel ezek a sejtek nem tartoznak a FruitChoices termékcsaládba).

Hasonlóképpen, ha például a Körte(Pears) és Eper(Strawberries) bejegyzések törlésre kerülnek, akkor azok többé nem jelennek meg a legördülő menüben, hanem két „üres” lehetőséget fog tartalmazni, mivel a legördülő menü továbbra is a teljes FruitChoices tartományra hivatkozik, beleértve a H9 és az üres cellákat is. H10 .

Ezen okok miatt, ha egy normál elnevezett tartományt használ a legördülő lista forrásaként, magát a megnevezett tartományt úgy kell szerkeszteni, hogy több vagy kevesebb cellát tartalmazzon, ha bejegyzéseket ad hozzá vagy töröl a listából.

A probléma megoldása a dinamikus(dynamic) tartománynév használata a legördülő menük forrásaként. A dinamikatartomány neve olyan név, amely automatikusan kibővül (vagy összehúzódik), hogy pontosan megfeleljen egy adatblokk méretének a bejegyzések hozzáadásakor vagy eltávolításakor. Ehhez egy képletet(formula) használjon a cellacímek rögzített tartománya helyett a megnevezett tartomány meghatározásához.

Hogyan állítsunk be dinamikus tartományt(Dynamic Range) az Excelben(Excel)

A normál (statikus) tartománynév egy megadott cellatartományra utal (a példánkban $H$3:$H$10, lásd alább):

A dinamikatartományt azonban egy képlet segítségével határozzák meg (lásd alább, egy dinamikus tartományneveket használó külön táblázatból):

Mielőtt elkezdené, feltétlenül töltse le Excel példafájlunkat  (a rendezési makrók le vannak tiltva).

Vizsgáljuk meg ezt a képletet részletesen. A Fruits opciók egy cellatömbben találhatók, közvetlenül a címsor alatt ( GYÜMÖLCS(FRUITS) ). Ez a címsor egy nevet is kapott: FruitsHeading :

A Fruits(Fruits) választások dinamikus tartományának meghatározásához használt teljes képlet a következő:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(OFFSET(FruitsHeading,1,0,20,1)),0,0),0)-1,20),1)

A FruitsHeading(FruitsHeading) arra a címsorra utal, amely egy sorral a lista első bejegyzése felett van. A 20-as szám (kétszer használva a képletben) a lista maximális mérete (sorok száma) (ez tetszés szerint módosítható).

Vegye figyelembe, hogy ebben a példában csak 8 bejegyzés található a listában, de ezek alatt is vannak üres cellák, ahol további bejegyzéseket lehet hozzáadni. A 20-as szám a teljes blokkra vonatkozik, ahol bejegyzéseket lehet tenni, nem pedig a bejegyzések tényleges számát.

Most bontsuk fel a képletet darabokra (minden egyes darab színkódolása), hogy megértsük, hogyan működik:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(OFFSET(FruitsHeading,1,0,20,1)),0,0),0)-1,20),1)

A „legbelső” darab az OFFSET(FruitsHeading,1,0,20,1) . Ez a 20 cellából álló blokkra hivatkozik (a FruitsHeading cella alatt), ahol a választási lehetőségek megadhatók. Ez az OFFSET funkció lényegében a következőt mondja: Kezdje a FruitsHeading cellával, menjen le 1 sorral és 0 oszlop felett, majd válasszon ki egy 20 sor hosszú és 1 oszlop széles területet. Így megkapjuk azt a 20 soros blokkot, ahol a Gyümölcsök(Fruits) opciókat kell megadni.

A képlet következő része az ISBLANK függvény:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(the above),0,0),0)-1,20),1)

Itt az OFFSET funkciót (a fenti magyarázatot) a „fenti”-re cseréltük (a könnyebb olvashatóság érdekében). De az ISBLANK függvény az (ISBLANK)OFFSET függvény által meghatározott 20 soros cellatartományon működik.

Az ISBLANK(ISBLANK) ezután 20 IGAZ(TRUE) és HAMIS értékből álló halmazt hoz létre, jelezve, hogy az (FALSE)OFFSET függvény által hivatkozott 20 soros tartomány egyes cellái üresek (üresek) vagy sem. Ebben a példában a készlet első 8 értéke HAMIS(FALSE) , mivel az első 8 cella nem üres, az utolsó 12 érték pedig IGAZ(TRUE) lesz .

A képlet következő része az INDEX függvény:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(the above,0,0),0)-1,20),1)

A „fenti” ismét a fent leírt ISBLANK és OFFSET funkciókra vonatkozik. Az INDEX függvény egy tömböt ad vissza, amely az ISBLANK függvény által létrehozott 20 TRUE / FALSE

Az INDEX(INDEX) általában arra szolgál, hogy kiválasszon egy bizonyos értéket (vagy értéktartományt) egy adatblokkból egy bizonyos sor és oszlop megadásával (a blokkon belül). De ha a sor és oszlop bemenetét nullára állítja (ahogyan ez itt történik), az INDEX a teljes adatblokkot tartalmazó tömböt ad vissza.

A képlet következő része a MATCH függvény:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,the above,0)-1,20),1)

A MATCH függvény az első TRUE érték pozícióját adja vissza az (TRUE)INDEX függvény által visszaadott tömbön belül . Mivel a lista első 8 bejegyzése nem üres, a tömb első 8 értéke FALSE lesz , a kilencedik pedig TRUE (mivel a tartomány 9. sora üres).

Tehát a MATCH függvény a 9 értéket adja vissza . Ebben az esetben viszont nagyon szeretnénk tudni, hogy hány bejegyzés van a listában, ezért a képlet levon 1-et a MATCH értékből (ami az utolsó bejegyzés pozícióját adja). Tehát végül a MATCH ( TRUE ,a fenti,0)-1 (TRUE)8 értéket ad vissza .

A képlet következő része az IFERROR függvény:

=OFFSET(FruitsHeading,1,0,IFERROR(the above,20),1)

Az IFERROR függvény egy alternatív értéket ad vissza, ha az első megadott érték hibát eredményez. Ez a függvény azért szerepel benne, mert ha a teljes cellablokk (mind a 20 sor) meg van töltve bejegyzésekkel, a MATCH függvény hibát ad vissza.

Ez azért van így, mert azt mondjuk a MATCH függvénynek, hogy keresse az első IGAZ(TRUE) értéket (az ISBLANK függvény értéktömbjében), de ha NINCS üres a cellák közül, akkor a teljes tömb (NONE)FALSE értékekkel lesz kitöltve . Ha a MATCH nem találja a célértéket ( TRUE ) a keresett tömbben, akkor hibát ad vissza.

Tehát, ha a teljes lista megtelt (és ezért a MATCH hibát ad vissza), az IFERROR függvény ehelyett 20 értéket ad vissza (tudván, hogy a listában 20 bejegyzésnek kell lennie).

Végül az OFFSET(FruitsHeading,1,0,a fenti,1)(OFFSET(FruitsHeading,1,0,the above,1)) visszaadja azt a tartományt, amelyet valójában keresünk: Kezdje a FruitsHeading cellával, menjen le 1 sorral és 0 oszlop felett, majd válasszon ki egy olyan területet, amely akárhány sor hosszúságú. vannak bejegyzések a listában (és 1 oszlop széles). Tehát a teljes képlet együtt azt a tartományt adja vissza, amely csak a tényleges bejegyzéseket tartalmazza (az első üres celláig).

Ha ezzel a képlettel határozza meg a legördülő menü forrását képező tartományt, akkor szabadon szerkesztheti a listát (bejegyzéseket adhat hozzá vagy távolíthat el, mindaddig, amíg a fennmaradó bejegyzések a felső cellában kezdődnek, és egymás mellett vannak), és a legördülő menü mindig tükrözi az aktuális lista (lásd 6. ábra(Figure 6) ).

Az itt használt példafájlt (dinamikus listák) tartalmazza, és letöltheti erről a webhelyről. A makrók azonban nem működnek, mert a WordPress nem szereti a makrókat tartalmazó Excel könyveket.

A listablokkban lévő sorok számának megadása helyett a listablokkhoz saját tartománynevet rendelhetünk, amelyet azután egy módosított képletben használhatunk fel. A példafájlban egy második lista ( Names ) használja ezt a módszert. Itt a teljes listablokk (a „NAMES” címsor alatt, 40 sor a példafájlban) a NameBlock tartománynévvel van rendelve . A Névlista(NamesList) meghatározásának másik képlete a következő:

=OFFSET(NamesHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(NamesBlock),0,0),0)-1,ROWS(NamesBlock)),1)

ahol a NamesBlock az OFFSET ( FruitsHeading,1,0,20,1 ), a ROWS(NamesBlock) pedig(ROWS(NamesBlock)) a 20-at (sorok száma) helyettesíti a korábbi képletben.

Ezért a könnyen szerkeszthető legördülő listákhoz (beleértve más, esetleg tapasztalatlan felhasználók által is) próbáljon dinamikus tartományneveket használni! És vegye figyelembe, hogy bár ez a cikk a legördülő listákra összpontosít, a dinamikus tartománynevek bárhol használhatók, ahol egy változó méretű tartományra vagy listára kell hivatkozni. Élvezd!



About the author

Számítástechnikai szakértő vagyok, több mint 10 éves tapasztalattal, és arra specializálódtam, hogy segítsek az embereknek az irodájukban lévő számítógépeik kezelésében. Cikkeket írtam olyan témákban, mint az internetkapcsolat optimalizálása, a számítógép beállítása a legjobb játékélmény érdekében stb. Ha bármiben szeretnél segítséget kérni munkáddal vagy magánéleteddel kapcsolatban, én vagyok a megfelelő személy!



Related posts