Динамичен именуван диапазон на Excel: как да създавате и използвате

  • Споделя Това
Michael Brown

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

В урока от миналата седмица разгледахме различни начини за дефиниране на статичен именуван диапазон в Excel. Статичното име винаги се отнася до едни и същи клетки, което означава, че ще трябва да актуализирате референцията на диапазона ръчно, когато добавяте нови или премахвате съществуващи данни.

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

    Как да създадете динамичен именуван диапазон в Excel

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

    1. На Формула в раздела Дефинирани имена група, щракнете върху Определяне на името Или натиснете Ctrl + F3, за да отворите менюто за имена на Excel, и щракнете върху Нов... бутон.
    2. Така или иначе, Ново име Ще се отвори диалогов прозорец, в който ще посочите следните данни:
      • В Име въведете името на динамичния диапазон.
      • В Обхват в падащото меню задайте обхвата на името. Работна тетрадка (по подразбиране) се препоръчва в повечето случаи.
      • В Отнася се за въведете формулата OFFSET COUNTA или INDEX COUNTA.
    3. Натиснете OK. Готово!

    На следващата снимка на екрана дефинираме динамичен диапазон с име елементи която побира всички клетки с данни в колона А, с изключение на заглавния ред:

    Формула OFFSET за дефиниране на динамичен именуван диапазон на Excel

    Общата формула за създаване на динамичен именуван диапазон в Excel е следната:

    OFFSET( first_cell , 0, 0, COUNTA( колона ), 1)

    Къде:

    • first_cell - първият елемент, който ще бъде включен в посочения диапазон, например $A$2.
    • колона - абсолютна препратка към колоната, например $A:$A.

    В основата на тази формула се използва функцията COUNTA, за да се получи броят на непразните клетки в интересуващата ви колона. Този брой се прехвърля директно в височина аргумент на функцията OFFSET(reference, rows, cols, [height], [width]), който указва колко реда да се върнат.

    Освен това това е обикновена формула за офсет, в която:

    • справка е началната точка, от която се изчислява отместването (first_cell).
    • редове и колони са 0, тъй като няма колони или редове, които да се компенсират.
    • ширина е равен на 1 колона.

    Например, за да създадем динамичен именуван диапазон за колона А в лист 3, започващ от клетка А2, използваме тази формула:

    =OFFSET(Sheet3!$A$2, 0, 0, COUNTA(Sheet3!$A:$A), 1)

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

    Формула INDEX за създаване на динамичен именуван диапазон в Excel

    Друг начин за създаване на динамичен диапазон в Excel е използването на COUNTA в комбинация с функцията INDEX.

    first_cell :INDEX( колона , COUNTA( колона ))

    Тази формула се състои от две части:

    • От лявата страна на оператора за обхват (:) поставяте твърдо зададената начална референция, например $A$2.
    • От дясната страна използвате функцията INDEX(array, row_num, [column_num]), за да разберете крайната препратка. Тук предоставяте цялата колона A за масива и използвате COUNTA, за да получите номера на реда (т.е. броя на клетките без вход в колона A).

    За нашия примерен набор от данни (вижте снимката на екрана по-горе) формулата е следната:

    =$A$2:INDEX($A:$A, COUNTA($A:$A))

    Тъй като в колона A има 5 непразни клетки, включително заглавието на колоната, COUNTA връща 5. Следователно INDEX връща $A$5, която е последната използвана клетка в колона A (обикновено формулата Index връща стойност, но операторът reference я принуждава да връща референция). И тъй като сме задали $A$2 като начална точка, крайният резултат от формулата е диапазонът $A$2:$A$5.

    За да тествате новосъздадения динамичен диапазон, можете да зададете на COUNTA да извлича броя на елементите:

    =COUNTA(Артикули)

    Ако всичко е направено правилно, резултатът от формулата ще се промени, след като добавите или премахнете елементи от/към списъка:

    Забележка. Двете формули, разгледани по-горе, дават един и същ резултат, но има разлика в производителността, която трябва да имате предвид. OFFSET е нестабилна функция, която се преизчислява при всяка промяна в листа. При мощни съвременни машини и разумни по размер набори от данни това не би трябвало да е проблем. При машини с малък капацитет и големи набори от данни това може да забави работата на Excel-а. В този случай бихтепо-добре използвайте формулата INDEX, за да създадете динамичен именуван диапазон.

    Как да създадете двуизмерен динамичен диапазон в Excel

    За да създадете двуизмерен именуван диапазон, при който не само броят на редовете, но и броят на колоните е динамичен, използвайте следната модификация на формулата INDEX COUNTA:

    first_cell :INDEX($1:$1048576, COUNTA( first_column ), COUNTA( първи_ред )))

    В тази формула имате две функции COUNTA, за да получите последния непълен ред и последната непразна колона ( row_num и номер на колона (column_num) съответно аргументите на функцията INDEX). масив подавате целия работен лист (1048576 реда в Excel 2016 - 2007; 65535 реда в Excel 2003 и по-ниски).

    А сега нека дефинираме още един динамичен диапазон за нашия набор от данни: диапазонът с име продажби която включва данни за продажбите за 3 месеца (от януари до март) и се настройва автоматично при добавяне на нови артикули (редове) или месеци (колони) в таблицата.

    При данни за продажбите, започващи от колона В, ред 2, формулата придобива следната форма:

    =$B$2:INDEX($1:$1048576,COUNTA($B:$B),COUNTA($2:$2))

    За да сте сигурни, че динамичният диапазон работи както трябва, въведете следните формули някъде в листа:

    =SUM(продажби)

    =SUM(B2:D5)

    Както можете да видите на скрийншота по-долу, и двете формули връщат една и съща обща сума. Разликата се проявява в момента, в който добавите нови записи в таблицата: първата формула (с динамичния именуван диапазон) ще се актуализира автоматично, докато втората ще трябва да се актуализира ръчно при всяка промяна. Това е огромна разлика, нали?

    Как да използвате динамични именувани диапазони във формулите на Excel

    В предишните части на този урок вече видяхте няколко прости формули, които използват динамични диапазони. Сега нека се опитаме да измислим нещо по-смислено, което да показва реалната стойност на динамичен диапазон с имена в Excel.

    За този пример ще използваме класическата формула INDEX MATCH, която изпълнява Vlookup в Excel:

    INDEX ( return_range , MATCH ( lookup_value , lookup_range , 0))

    ...и вижте как можем да направим формулата още по-мощна с помощта на динамични именувани диапазони.

    Както е показано на снимката по-горе, ние се опитваме да създадем табло за управление, в което потребителят въвежда име на артикул в H1 и получава общите продажби за този артикул в H2. Нашата примерна таблица, създадена с демонстрационна цел, съдържа само 4 артикула, но в реалните ви листове може да има стотици и дори хиляди редове. Освен това нови артикули могат да се добавят ежедневно, така че използването на препратки не езащото ще трябва да актуализирате формулата отново и отново. Прекалено съм мързелив за това! :)

    За да принудим формулата да се разширява автоматично, ще дефинираме 3 имена: 2 динамични диапазона и 1 статична именувана клетка:

    Lookup_range: =$A$2:INDEX($A:$A, COUNTA($A:$A))

    Return_range: =$E$2:INDEX($E:$E, COUNTA($E:$E))

    Lookup_value: =$H$1

    Забележка: Excel ще добави името на текущия лист към всички препратки, така че преди да създадете имената, не забравяйте да отворите листа с изходните данни.

    Сега започнете да въвеждате формулата в H1. Когато се стигне до първия аргумент, въведете няколко символа от името, което искате да използвате, и Excel ще покаже всички налични съвпадащи имена. Щракнете два пъти върху подходящото име и Excel ще го вмъкне веднага във формулата:

    Завършената формула изглежда по следния начин:

    =INDEX(Return_range, MATCH(Lookup_value, Lookup_range, 0))

    И работи перфектно!

    Веднага щом добавите нови записи в таблицата, те ще бъдат включени в изчисленията ви веднага, без да се налага да правите нито една промяна във формулата! И ако някога се наложи да пренесете формулата в друг файл на Excel, просто създайте същите имена в целевата работна книга, копирайте/вмъкнете формулата и тя ще заработи веднага.

    Съвет. Освен че правят формулите по-устойчиви, динамичните диапазони са полезни за създаване на динамични падащи списъци.

    Ето как създавате и използвате динамични именувани диапазони в Excel. За да разгледате по-отблизо формулите, разгледани в този урок, можете да изтеглите нашата примерна работна книга за динамични именувани диапазони в Excel. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.