
Генеричка формула
=SUM(firstcell:INDEX(data,rows,cols))
Резиме
Да бисте дефинисали опсег на основу вредности у другој ћелији, можете да користите функцију ИНДЕКС. У приказаном примеру, формула у Ј7 је:
=SUM(C5:INDEX(data,J5,J6))
где је „податак“ именовани опсег Б5: Г9.
Објашњење
Ова формула се ослања на одређено понашање ИНДЕКС-а - иако се чини да ИНДЕКС враћа вредност на одређеној локацији, заправо враћа референцу на локацију. У већини формула не бисте приметили разлику - Екцел једноставно процењује референцу и враћа вредност. Ова формула користи ову функцију за конструисање динамичког опсега на основу уноса радног листа.
Унутар функције збира, прва референца је једноставно прва ћелија у опсегу која покрива све могуће ћелије:
=SUM(C5:
Да бисмо добили последњу ћелију, користимо ИНДЕКС. Овде дајемо ИНДЕКСУ именовани опсег „подаци“, што је максимално могући опсег вредности, као и вредности из Ј5 (редови) и Ј6 (колоне). ИНДЕКС не враћа опсег, већ само једну ћелију на тој локацији, Е9 у примеру:
INDEX(data,J5,J6) // returns E9
Оригинална формула је сведена на:
=SUM(C5:E9)
који враћа 300, збир свих вредности у Ц5: Е9.
Формула у Ј8 је готово иста, али за израчунавање просека користи АВЕРАГЕ уместо СУМ. Када корисник промени вредности у Ј5 или Ј6, опсег се ажурира и враћају се нови резултати.
Алтернатива ОФФСЕТ-у
Можете направити сличне формуле са функцијом ОФФСЕТ, приказаном доле:
=SUM(OFFSET(C5,0,0,J5,J6)) // sum =AVERAGE(OFFSET(C5,0,0,J5,J6)) // average
ОФФСЕТ је дизајниран да врати опсег, тако да су формуле можда једноставније за разумевање. Међутим, ОФФСЕТ је испарљива функција и може изазвати проблеме са перформансама када се користи у већим, сложенијим радним листовима.