Použite názvy dynamických rozsahov v Exceli na flexibilné rozbaľovacie zoznamy

Tabuľky programu Excel(Excel) často obsahujú rozbaľovacie zoznamy buniek na zjednodušenie a/alebo štandardizáciu zadávania údajov. Tieto rozbaľovacie ponuky sa vytvárajú pomocou funkcie overenia údajov na určenie zoznamu povolených položiek.

Ak chcete nastaviť jednoduchý rozbaľovací zoznam, vyberte bunku, do ktorej sa budú zadávať údaje, kliknite na položku Overenie údajov(Data Validation) (na karte Údaje(Data) ), vyberte položku Overenie údajov(Data Validation) , vyberte položku Zoznam(List) (v časti Povoliť(Allow) :) a potom zadajte položky zoznamu (oddelené čiarkami ) v poli Zdroj(Source) : (pozri obrázok 1).

V tomto type základného rozbaľovacieho zoznamu je zoznam povolených záznamov špecifikovaný v rámci samotnej validácie údajov; preto, aby mohol používateľ vykonať zmeny v zozname, musí otvoriť a upraviť overenie údajov. To však môže byť ťažké pre neskúsených používateľov alebo v prípadoch, keď je zoznam možností dlhý.

Ďalšou možnosťou je umiestniť zoznam do pomenovaného rozsahu v tabuľkovom hárku(named range within the spreadsheet) a potom zadať názov rozsahu (s predvoleným znakom rovnosti) v poli Zdroj(Source) : overenia údajov (ako je znázornené na obrázku 2(Figure 2) ).

Táto druhá metóda uľahčuje úpravu možností v zozname, ale pridávanie alebo odstraňovanie položiek môže byť problematické. Keďže pomenovaný rozsah ( v našom príklade FruitChoices ) odkazuje na pevný rozsah buniek ($H$3:$H$10, ako je znázornené), ak sa do buniek H11 alebo nižšie pridá viac možností, v rozbaľovacej ponuke sa nezobrazia. (keďže tieto bunky nie sú súčasťou sortimentu FruitChoices ).

Podobne, ak sa napríklad vymažú položky Hrušky(Pears) a Jahody(Strawberries) , už sa nebudú zobrazovať v rozbaľovacej ponuke, ale namiesto toho bude rozbaľovacia ponuka obsahovať dve „prázdne“ možnosti, pretože rozbaľovacia ponuka stále odkazuje na celý rozsah FruitChoices vrátane prázdnych buniek H9 a H10 .

Z týchto dôvodov sa pri použití normálneho pomenovaného rozsahu ako zdroja zoznamu pre rozbaľovaciu ponuku musí samotný pomenovaný rozsah upraviť tak, aby obsahoval viac alebo menej buniek, ak sa položky pridajú alebo odstránia zo zoznamu.

Riešením tohto problému je použitie názvu dynamického(dynamic) rozsahu ako zdroja pre rozbaľovacie možnosti. Názov dynamického rozsahu je taký, ktorý sa automaticky rozšíri (alebo zmenší) tak, aby presne zodpovedal veľkosti bloku údajov pri pridávaní alebo odstraňovaní záznamov. Ak to chcete urobiť, použite vzorec(formula) , a nie pevný rozsah adries buniek na definovanie pomenovaného rozsahu.

Ako nastaviť dynamický rozsah(Dynamic Range) v Exceli(Excel)

Normálny (statický) názov rozsahu odkazuje na špecifikovaný rozsah buniek ($H$3:$H$10 v našom príklade, pozri nižšie):

Dynamický rozsah je však definovaný pomocou vzorca (pozri nižšie, prevzatý zo samostatnej tabuľky, ktorá používa názvy dynamických rozsahov):

Skôr ako začneme, uistite sa, že ste si stiahli náš vzorový súbor programu Excel  (makrá na triedenie boli zakázané).

Pozrime sa na tento vzorec podrobne. Voľby pre Ovocie sú v bloku buniek priamo pod nadpisom ( OVOCIE(FRUITS) ). Tomuto nadpisu je priradený aj názov: FruitsHeading :

Celý vzorec použitý na definovanie dynamického rozsahu pre výber ovocia(Fruits) je:

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

FruitsHeading odkazuje na nadpis, ktorý je o jeden riadok nad prvou položkou v zozname. Číslo 20 (použité dvakrát vo vzorci) je maximálna veľkosť (počet riadkov) pre zoznam (dá sa upraviť podľa želania).

Všimnite si, že v tomto príklade je v zozname iba 8 položiek, ale pod nimi sú aj prázdne bunky, do ktorých je možné pridať ďalšie položky. Číslo 20 sa vzťahuje na celý blok, v ktorom je možné vykonávať záznamy, nie na skutočný počet záznamov.

Teraz rozložme vzorec na kúsky (farebné označenie každého dielu), aby sme pochopili, ako to funguje:

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

„Najvnútornejší“ kus je OFFSET (FruitsHeading,1,0,20,1) . Toto odkazuje na blok 20 buniek (pod bunkou FruitsHeading ), kde je možné zadať voľby. Táto funkcia OFFSET v podstate hovorí: Začnite v bunke FruitsHeading , prejdite nadol o 1 riadok a viac ako 0 stĺpcov, potom vyberte oblasť, ktorá má dĺžku 20 riadkov a šírku 1 stĺpca. To nám dáva 20-riadkový blok, do ktorého sa zadávajú možnosti ovocia .(Fruits)

Ďalším kúskom vzorca je funkcia ISBLANK :

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

Tu bola funkcia OFFSET (vysvetlená vyššie) nahradená „vyššie“ (aby sa veci ľahšie čítali). Ale funkcia ISBLANK funguje na 20-riadkovom rozsahu buniek, ktoré definuje funkcia OFFSET .

ISBLANK potom vytvorí množinu 20 hodnôt TRUE a FALSE , ktoré označujú, či je každá z jednotlivých buniek v rozsahu 20 riadkov, na ktorý odkazuje funkcia OFFSET , prázdna (prázdna) alebo nie. V tomto príklade bude prvých 8 hodnôt v množine FALSE , pretože prvých 8 buniek nie je prázdnych a posledných 12 hodnôt bude TRUE .

Ďalšou časťou vzorca je funkcia INDEX :

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

Opäť platí, že „vyššie uvedené“ sa vzťahuje na funkcie ISBLANK a OFFSET opísané vyššie. Funkcia INDEX vracia pole obsahujúce 20 hodnôt TRUE / FALSE vytvorených funkciou ISBLANK .

INDEX sa bežne používa na výber určitej hodnoty (alebo rozsahu hodnôt) z bloku údajov zadaním určitého riadka a stĺpca (v rámci tohto bloku). Ale nastavenie vstupov riadkov a stĺpcov na nulu (ako sa to robí tu) spôsobí , že INDEX vráti pole obsahujúce celý blok údajov.

Ďalšou časťou vzorca je funkcia MATCH :

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

Funkcia MATCH vráti pozíciu prvej hodnoty TRUE v rámci poľa, ktoré vráti funkcia INDEX . Keďže prvých 8 položiek v zozname nie je prázdnych, prvých 8 hodnôt v poli bude FALSE a deviata hodnota bude TRUE (keďže 9. riadok v rozsahu je prázdny).

Takže funkcia MATCH vráti hodnotu 9 . V tomto prípade však skutočne chceme vedieť, koľko záznamov je v zozname, takže vzorec odpočíta 1 od hodnoty MATCH (čo udáva pozíciu posledného záznamu). Takže v konečnom dôsledku MATCH ( TRUE ,vyššie uvedené,0)-1 vráti hodnotu 8 .

Ďalšou časťou vzorca je funkcia IFERROR :

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

Ak prvá zadaná hodnota spôsobí chybu, funkcia IFERROR vráti alternatívnu hodnotu. Táto funkcia je zahrnutá, pretože ak je celý blok buniek (všetkých 20 riadkov) vyplnený záznamami, funkcia MATCH vráti chybu.

Je to preto, že funkcii MATCH(MATCH) hovoríme, aby hľadala prvú hodnotu TRUE(TRUE) (v poli hodnôt z funkcie ISBLANK ), ale ak ŽIADNA(NONE) z buniek nie je prázdna, potom sa celé pole vyplní hodnotami FALSE . Ak MATCH nemôže nájsť cieľovú hodnotu ( TRUE ) v poli, ktoré hľadá, vráti chybu.

Ak je teda celý zoznam plný (a preto MATCH vráti chybu), funkcia IFERROR namiesto toho vráti hodnotu 20 (s vedomím, že v zozname musí byť 20 položiek).

Nakoniec OFFSET(FruitsHeading,1,0,vyššie uvedené,1)(OFFSET(FruitsHeading,1,0,the above,1)) vráti rozsah, ktorý skutočne hľadáme: Začnite v bunke FruitsHeading , prejdite o 1 riadok nadol a viac ako 0 stĺpcov, potom vyberte oblasť, ktorá má dĺžku ľubovoľného počtu riadkov. v zozname sú položky (a 1 stĺpec široký). Takže celý vzorec spolu vráti rozsah, ktorý obsahuje iba skutočné položky (až po prvú prázdnu bunku).

Použitie tohto vzorca na definovanie rozsahu, ktorý je zdrojom pre rozbaľovaciu ponuku, znamená, že môžete voľne upravovať zoznam (pridávať alebo odstraňovať položky, pokiaľ zostávajúce položky začínajú v hornej bunke a sú priľahlé) a rozbaľovacia ponuka bude vždy odrážať aktuálnu zoznam (pozri obrázok 6(Figure 6) ).

Vzorový súbor (dynamické zoznamy) , ktorý sa tu použil, je zahrnutý a je možné ho stiahnuť z tejto webovej stránky. Makrá však nefungujú, pretože WordPress nemá rád knihy Excelu(Excel) s makrami.

Ako alternatívu k zadávaniu počtu riadkov v bloku zoznamu možno bloku zoznamu priradiť vlastný názov rozsahu, ktorý sa potom môže použiť v upravenom vzorci. Vo vzorovom súbore používa túto metódu druhý zoznam ( Mená ). (Names)Tu je celému bloku zoznamu (pod nadpisom „NAMES“, 40 riadkov v súbore príkladu) priradený názov rozsahu NameBlock . Alternatívny vzorec na definovanie NamesList je potom:

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

kde NamesBlock nahrádza OFFSET ( FruitsHeading,1,0,20,1 ) a ROWS(NamesBlock) nahrádza 20 (počet riadkov) v predchádzajúcom vzorci.

Takže pre rozbaľovacie zoznamy, ktoré možno ľahko upravovať (vrátane iných používateľov, ktorí nemusia byť skúsení), skúste použiť názvy dynamických rozsahov! A všimnite si, že hoci bol tento článok zameraný na rozbaľovacie zoznamy, názvy dynamických rozsahov možno použiť kdekoľvek, kde potrebujete odkazovať na rozsah alebo zoznam, ktorý sa môže líšiť veľkosťou. Užite si to!



About the author

Som vývojár freeware softvéru a zástanca Windows Vista/7. Napísal som niekoľko stoviek článkov na rôzne témy súvisiace s operačným systémom vrátane tipov a trikov, návodov na opravy a osvedčených postupov. Prostredníctvom svojej spoločnosti Help Desk Services ponúkam aj poradenské služby súvisiace s kanceláriou. Veľmi dobre rozumiem tomu, ako Office 365 funguje, jeho funkcie a ako ich najefektívnejšie používať.



Related posts