Използвайте имена на динамични диапазони в Excel за гъвкави падащи менюта

Електронните таблици на Excel(Excel) често включват падащи менюта на клетки за опростяване и/или стандартизиране на въвеждането на данни. Тези падащи менюта се създават с помощта на функцията за валидиране на данни, за да посочите списък с допустими записи.

За да настроите прост падащ списък, изберете клетката, в която ще бъдат въведени данните, след това щракнете върху Проверка(Data Validation) на данни (в раздела Данни(Data) ), изберете Проверка на данни(Data Validation) , изберете Списък(List) (под Разреши(Allow) :) и след това въведете елементите от списъка (разделени със запетаи ) в полето Източник(Source) : (вижте фигура 1).

В този тип основно падащо меню списъкът с допустими записи се посочва в рамките на самото валидиране на данни; следователно, за да направи промени в списъка, потребителят трябва да отвори и редактира проверката на данните. Това обаче може да е трудно за неопитни потребители или в случаите, когато списъкът с възможности за избор е дълъг.

Друга възможност е да поставите списъка в наименуван диапазон в електронната таблица(named range within the spreadsheet) и след това да посочите това име на диапазон (предварително със знак за равенство) в полето Източник(Source) : на валидирането на данните (както е показано на Фигура 2(Figure 2) ).

Този втори метод улеснява редактирането на изборите в списъка, но добавянето или премахването на елементи може да бъде проблематично. Тъй като посоченият диапазон ( FruitChoices , в нашия пример) се отнася до фиксиран диапазон от клетки ($H$3:$H$10, както е показано), ако към клетките H11 или по-долу се добавят повече възможности за избор, те няма да се покажат в падащото меню (тъй като тези клетки не са част от гамата FruitChoices ).

По същия начин, ако например записи за круши(Pears) и ягоди(Strawberries) бъдат изтрити, те вече няма да се показват в падащото меню, но вместо това падащото меню ще включва два „празни“ избора, тъй като падащото меню все още препраща към целия диапазон на FruitChoices, включително празните клетки H9 и H10 .

Поради тези причини, когато използвате нормален именуван диапазон като източник на списък за падащо меню, самият наименуван диапазон трябва да бъде редактиран, за да включва повече или по-малко клетки, ако записи се добавят или изтриват от списъка.

Решението на този проблем е да се използва име на динамичен(dynamic) диапазон като източник на падащите опции. Името на динамичен диапазон е това, което автоматично се разширява (или свива), за да съответства точно на размера на блок от данни при добавяне или премахване на записи. За да направите това, използвате формула(formula) , а не фиксиран диапазон от адреси на клетки, за да дефинирате наименувания диапазон.

Как да настроите динамичен диапазон(Dynamic Range) в Excel

Нормално (статично) име на диапазон се отнася до определен диапазон от клетки ($H$3:$H$10 в нашия пример, вижте по-долу):

Но динамичният диапазон се дефинира с помощта на формула (вижте по-долу, взета от отделна електронна таблица, която използва имена на динамичен диапазон):

Преди да започнем, уверете се, че сте изтеглили нашия примерен файл на Excel  (макросите за сортиране са деактивирани).

Нека разгледаме тази формула подробно. Изборите за Плодове са в блок от клетки точно под заглавие ( Плодове(FRUITS) ). На това заглавие е присвоено и име: FruitsHeading :

Цялата формула, използвана за определяне на динамичния диапазон за избора на плодове , е:(Fruits)

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

FruitsHeading се отнася до заглавието, което е един ред над първия запис в списъка. Числото 20 (използвано два пъти във формулата) е максималният размер (брой редове) за списъка (това може да се коригира по желание).

Имайте предвид, че в този пример има само 8 записа в списъка, но има и празни клетки под тях, където могат да се добавят допълнителни записи. Числото 20 се отнася до целия блок, където могат да се правят записи, а не до действителния брой записи.

Сега нека разбием формулата на части (цветово кодиране на всяко парче), за да разберем как работи:

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

„Най-вътрешната“ част е OFFSET(FruitsHeading,1,0,20,1) . Това препраща към блока от 20 клетки (под клетката FruitsHeading ), където могат да бъдат въведени избори. Тази функция OFFSET основно казва: Започнете от клетката FruitsHeading , слезте надолу с 1 ред и над 0 колони, след което изберете област, която е дълга 20 реда и широка 1 колона. Това ни дава 20-редовия блок, където се въвеждат изборите на плодове .(Fruits)

Следващата част от формулата е функцията ISBLANK :

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

Тук функцията OFFSET (обяснена по-горе) е заменена с „горе“ (за да направи нещата по-лесни за четене). Но функцията ISBLANK работи върху 20-редовия диапазон от клетки, който функцията OFFSET дефинира.

След това ISBLANK(ISBLANK) създава набор от 20 TRUE и FALSE стойности, показващи дали всяка от отделните клетки в диапазона от 20 реда, посочен от функцията OFFSET , е празна (празна) или не. В този пример първите 8 стойности в набора ще бъдат FALSE , тъй като първите 8 клетки не са празни, а последните 12 стойности ще бъдат TRUE .

Следващата част от формулата е функцията INDEX :

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

Отново, „горе“ се отнася до функциите ISBLANK(ISBLANK) и OFFSET , описани по-горе. Функцията INDEX връща масив, съдържащ 20-те TRUE / FALSE стойности, създадени от функцията ISBLANK .

INDEX обикновено се използва за избиране на определена стойност (или диапазон от стойности) от блок данни, чрез посочване на определен ред и колона (в рамките на този блок). Но задаване на входните данни за редове и колони на нула (както е направено тук) кара INDEX да върне масив, съдържащ целия блок от данни.

Следващата част от формулата е функцията MATCH :

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

Функцията MATCH връща позицията на първата стойност TRUE в масива, който се връща от функцията INDEX . Тъй като първите 8 записа в списъка не са празни, първите 8 стойности в масива ще бъдат FALSE , а деветата стойност ще бъде TRUE (тъй като 9 -ия ред в диапазона е празен).

Така че функцията MATCH ще върне стойността на 9 . В този случай обаче ние наистина искаме да знаем колко записа има в списъка, така че формулата изважда 1 от стойността MATCH (която дава позицията на последния запис). Така че в крайна сметка MATCH ( TRUE , горното, 0)-1 връща стойността на 8 .

Следващата част от формулата е функцията IFERROR :

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

Функцията IFERROR връща алтернативна стойност, ако първата посочена стойност води до грешка. Тази функция е включена, тъй като, ако целият блок клетки (всички 20 реда) са запълнени с записи, функцията MATCH ще върне грешка.

Това е така, защото казваме на функцията MATCH да търси първата стойност TRUE (в масива от стойности от функцията ISBLANK ), но ако НИКОЯ(NONE) от клетките не е празна, тогава целият масив ще бъде запълнен с FALSE стойности. Ако MATCH не може да намери целевата стойност ( TRUE ) в масива, който търси, връща грешка.

Така че, ако целият списък е пълен (и следователно MATCH връща грешка), функцията IFERROR вместо това ще върне стойността от 20 (знаейки, че трябва да има 20 записа в списъка).

И накрая, OFFSET(FruitsHeading,1,0,горе,1)(OFFSET(FruitsHeading,1,0,the above,1)) връща диапазона, който всъщност търсим: Започнете от клетката FruitsHeading , слезте надолу с 1 ред и над 0 колони, след което изберете област, която е дълга колкото и много редове има записи в списъка (и ширина 1 колона). Така цялата формула заедно ще върне диапазона, който съдържа само действителните записи (до първата празна клетка).

Използването на тази формула за дефиниране на диапазона, който е източник на падащото меню, означава, че можете свободно да редактирате списъка (добавяне или премахване на записи, стига останалите записи да започват от горната клетка и да са съседни) и падащото меню винаги ще отразява текущия списък (виж фигура 6(Figure 6) ).

Примерният файл (Динамични списъци) , който е използван тук, е включен и може да се изтегли от този уебсайт. Макросите обаче не работят, защото WordPress не харесва книги на Excel с макроси в тях.(Excel)

Като алтернатива на определянето на броя на редовете в списъчния блок, на списъчния блок може да бъде присвоено собствено име на диапазон, което след това може да се използва в модифицирана формула. В примерния файл втори списък ( Имена(Names) ) използва този метод. Тук на целия списъчен блок (под заглавието „NAMES“, 40 реда в примерния файл) се присвоява името на диапазона на NameBlock . След това алтернативната формула за дефиниране на списъка с имена(NamesList) е:

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

където NamesBlock замества OFFSET ( FruitsHeading,1,0,20,1 ) и ROWS(NamesBlock) замества 20 (брой редове) в по-ранната формула.

Така че, за падащи списъци, които могат лесно да се редактират (включително от други потребители, които може да са неопитни), опитайте да използвате имена на динамичен диапазон! И имайте предвид, че въпреки че тази статия е фокусирана върху падащи списъци, имената на динамични диапазони могат да се използват навсякъде, където трябва да препратите диапазон или списък, които могат да варират по размер. Наслади се!



About the author

„Аз съм експерт по Windows и Office на свободна практика. Имам над 10 години опит в работата с тези инструменти и мога да ви помогна да извлечете максимума от тях. Моите умения включват: работа с Microsoft Word, Excel, PowerPoint и Outlook; създаване на уеб страници и приложения; и помагане на клиентите да постигнат своите бизнес цели."



Related posts