Екцел динамички именовани опсег: како креирати и користити

  • Деле Ово
Michael Brown

У овом водичу ћете научити како да направите динамички именовани опсег у Екцел-у и како да га користите у формулама да би се нови подаци аутоматски укључили у прорачуне.

У прошлонедељном туториал, погледали смо различите начине да дефинишемо статички именовани опсег у Екцел-у. Статичко име се увек односи на исте ћелије, што значи да бисте морали ручно да ажурирате референцу опсега сваки пут када додајете нове или уклањате постојеће податке.

Ако радите са скупом података који се стално мења, можда ћете желети да учините свој именовани опсег динамичким тако да се аутоматски шири како би се прилагодио новододатим уносима или уговорима за искључивање уклоњених података. Даље у овом водичу, наћи ћете детаљна упутства корак по корак о томе како то да урадите.

    Како да креирате динамички именовани опсег у Екцел-у

    За За почетак, хајде да направимо динамички именовани опсег који се састоји од једне колоне и променљивог броја редова. Да бисте то урадили, извршите ове кораке:

    1. На картици Формула , у групи Дефинисана имена кликните на Дефини име . Или притисните Цтрл + Ф3 да отворите Екцел Наме Мангер и кликните на дугме Ново... .
    2. У сваком случају, отвориће се оквир за дијалог Ново име , где наведете следеће детаље:
      • У пољу Назив унесите име за свој динамички опсег.
      • У падајућем менију Опсег поставите обим назива. Радна свеска (подразумевано) се препоручује у већинислучајевима.
      • У пољу Односи се на , унесите формулу БРОЈКА ОФФСЕТ ЦОУНТА или ИНДЕКС ЦОУНТА.
    3. Кликните на ОК. Готово!

    На следећем снимку екрана дефинишемо динамички именовани опсег итемс који обухвата све ћелије са подацима у колони А, осим реда заглавља :

    Формула ОФФСЕТ за дефинисање Екцел динамичког именованог опсега

    Генеричка формула за прављење динамичког именованог опсега у Екцел-у је следећа:

    ОФФСЕТ ( прва_ћелија, 0, 0, ЦОУНТА( колона), 1)

    Где:

    • прва_ћелија - прва ставка која треба да буде укључена у именовани опсег, на пример $А$2.
    • колона - апсолутна референца на колону као што је $А:$А.

    У основи ове формуле, користите функцију ЦОУНТА да бисте добили број ћелија које нису празне у колони од интереса. Тај број иде директно у аргумент хеигхт функције ОФФСЕТ(референца, ровс, цолс, [хеигхт], [видтх]) говорећи јој колико редова треба да врати.

    Поред тога, то је обична формула помака, где је:

    • референца почетна тачка од које заснивате помак (прва_ћелија).
    • редови и цолс су оба 0, пошто нема колона или редова за померање.
    • видтх је једнака 1 колони.

    На пример, да бисмо направили динамички именовани опсег за колону А у Схеет3, почевши од ћелије А2, користимо ову формулу:

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

    Напомена. Ако дефинишетединамички опсег у тренутном радном листу, не морате да укључите назив листа у референце, Екцел ће то аутоматски урадити уместо вас. Ако правите опсег за неки други лист, ставите префикс ћелије или референце на опсег са именом листа праћеним узвичником (као у примеру формуле изнад).

    ИНДЕКС формула да бисте направили динамички именовани опсег у Екцел

    Други начин за креирање Екцел динамичког опсега је коришћење ЦОУНТА у комбинацији са функцијом ИНДЕКС.

    прва_ћелија:ИНДЕКС( колона,ЦОУНТА( колона))

    Ова формула се састоји од два дела:

    • На леву страну оператора опсега (:) стављате тврдо кодирану почетну референцу као што је $А$2 .
    • На десној страни користите функцију ИНДЕКС(низ, број_реда, [број_колоне]) да бисте открили завршну референцу. Овде уносите целу колону А за низ и користите ЦОУНТА да бисте добили број реда (тј. број ћелија које не улазе у колону А).

    За наш пример скупа података (погледајте снимак екрана изнад), формула иде на следећи начин:

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

    Пошто постоји 5 ћелија које нису празне у колони А, укључујући заглавље колоне, ЦОУНТА враћа 5. Сходно томе, ИНДЕКС враћа $А $5, што је последња коришћена ћелија у колони А (обично формула индекса враћа вредност, али је референтни оператор присиљава да врати референцу). И пошто смо поставили $А$2 као почетну тачку, коначни резултат одформула је опсег $А$2:$А$5.

    Да бисте тестирали новокреирани динамички опсег, можете наложити ЦОУНТА да преузме број ставки:

    =COUNTA(Items)

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

    Напомена. Две формуле о којима смо горе говорили дају исти резултат, али постоји разлика у перформансама које треба да будете свесни. ОФФСЕТ је променљива функција која се поново израчунава са сваком променом на листу. На моћним модерним машинама и скуповима података разумне величине, ово не би требало да представља проблем. На машинама малог капацитета и великим скуповима података, ово може успорити ваш Екцел. У том случају, боље би било да користите формулу ИНДЕКС да креирате динамички именовани опсег.

    Како направити дводимензионални динамички опсег у Екцел-у

    Да бисте направили дводимензионални именовани опсег, где је динамичан не само број редова већ и број колона, користите следећу модификацију формуле ИНДЕКС ЦОУНТА:

    прва_ћелија:ИНДЕКС($1:$1048576, ЦОУНТА( прва_колона), ЦОУНТА( први_ред)))

    У овој формули имате две функције ЦОУНТА да бисте добили последњи непразан ред и последњу непразну колону ( број_реда и број_колоне аргументи функције ИНДЕКС, респективно). У аргументу арраи уносите цео радни лист (1048576 редова у програму Екцел 2016 - 2007; 65535 редова у програму Екцел 2003 и старијим).

    А сада,хајде да дефинишемо још један динамички опсег за наш скуп података: опсег под називом продаја који укључује податке о продаји за 3 месеца (од јануара до марта) и аутоматски се прилагођава како додајете нове ставке (редове) или месеце (колоне) у табелу.

    Са подацима о продаји који почињу у колони Б, ред 2, формула поприма следећи облик:

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

    Да бисте били сигурни да ваш динамички опсег функционише како би требало, унесите следеће формуле негде на листу:

    =SUM(sales)

    =SUM(B2:D5)

    Као што можете видети на снимку екрана испод , обе формуле враћају исти збир. Разлика се открива у тренутку када додате нове уносе у табелу: прва формула (са динамичким именованим опсегом) ће се аутоматски ажурирати, док ће друга морати да се ажурира ручно са сваком променом. То чини велику разлику, ух?

    Како користити динамичке именоване опсеге у Екцел формулама

    У претходним одељцима овог упутства, већ сте видели неколико једноставних формула које користе динамичке опсеге. Сада, хајде да покушамо да смислимо нешто смисленије што показује стварну вредност Екцел динамичког именованог опсега.

    За овај пример, узећемо класичну формулу ИНДЕКС МАТЦХ која врши Влоокуп у Екцел-у:

    ИНДЕКС ( опсег_поврата, МАТЦХ ( вредност_потражи, опсег_потражи, 0))

    …и погледајте како може учинити формулу још моћнијом употребомдинамички именовани опсези.

    Као што је приказано на слици изнад, покушавамо да направимо контролну таблу, где корисник уноси назив ставке у Х1 и добија укупну продају за ту ставку у Х2. Наш узорак табеле креиран у сврху демонстрације садржи само 4 ставке, али у вашим листовима из стварног живота могу бити стотине, па чак и хиљаде редова. Штавише, нове ставке се могу додавати на дневној бази, тако да коришћење референци није опција, јер бисте морали да ажурирате формулу изнова и изнова. Превише сам лењ за то! :)

    Да бисмо натерали формулу да се аутоматски прошири, дефинисаћемо 3 имена: 2 динамичка опсега и 1 статичку ћелију:

    Лоокуп_ранге: =$А$2:ИНДЕКС($ А:$А, ЦОУНТА($А:$А))

    Повратни_опсег: =$Е$2:ИНДЕКС($Е:$Е, ЦОУНТА($Е:$Е))

    Лоокуп_валуе: =$Х$1

    Напомена. Екцел ће додати име тренутног листа свим референцама, тако да пре креирања имена обавезно отворите лист са изворним подацима.

    Сада почните да куцате формулу у Х1. Када је у питању први аргумент, откуцајте неколико знакова имена које желите да користите и Екцел ће приказати сва доступна имена која се подударају. Двапут кликните на одговарајуће име и Екцел ће га одмах уметнути у формулу:

    Завршена формула изгледа овако:

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

    И ради савршено!

    Чим додате нове записе у табелу, они ће бити укључени у ваше прорачуне наједном, без потребе да унесете ниједну промену у формулу! А ако икада будете морали да пренесете формулу у другу Екцел датотеку, једноставно направите иста имена у одредишној радној свесци, копирајте/налепите формулу и одмах покрените рад.

    Савет. Осим што чине формуле трајнијима, динамички опсези су корисни за креирање динамичких падајућих листа.

    Овако креирате и користите динамичке опсеге са именом у Екцел-у. Да бисте ближе погледали формуле о којима се говори у овом водичу, можете преузети нашу радну свеску Екцел динамичког именованог опсега. Захваљујем вам на читању и надам се да се видимо на нашем блогу следеће недеље!

    Мајкл Браун је посвећен технолошки ентузијаста са страшћу за поједностављење сложених процеса помоћу софтверских алата. Са више од деценије искуства у технолошкој индустрији, усавршио је своје вештине у Мицрософт Екцел-у и Оутлоок-у, као и у Гоогле табеле и документима. Мајклов блог посвећен је дељењу свог знања и стручности са другима, пружајући једноставне савете и упутства за побољшање продуктивности и ефикасности. Без обзира да ли сте искусан професионалац или почетник, Мајклов блог нуди вредне увиде и практичне савете како да на најбољи начин искористите ове основне софтверске алате.