Екцел формула: ЦОУНТИФС са променљивим опсегом -

Резиме

Да бисте конфигурисали ЦОУНТИФС (или ЦОУНТИФ) са променљивим опсегом, можете користити функцију ОФФСЕТ. У приказаном примеру, формула у Б11 је:

=COUNTIFS(OFFSET(B$5,0,0,ROW()-ROW(B$5)-1,1),"")

Ова формула броји непразне ћелије у опсегу који почиње на Б5 и завршава се 2 реда изнад ћелије у којој живи формула. Иста формула се копира и налепи 2 реда испод последњег уноса у податке, као што је приказано.

Објашњење

У приказаном примеру, формула у Б11 је:

=COUNTIFS(OFFSET(B$5,0,0,ROW()-ROW(B$5)-1,1),"")

Радећи изнутра према ван, посао постављања променљивог опсега обавља функција ОФФСЕТ овде:

OFFSET(B$5,0,0,ROW()-ROW(B$5)-1,1) // variable range

ОФФСЕТ има пет аргумената и конфигурисан је овако:

  • референца = Б $ 5, почиње у ћелији Б5, ред закључан
  • редови = 0, померају се нула редова од почетне ћелије
  • цолс = 0, офсет нула колона полази од ћелије
  • висина = РЕД () - РЕД (Б $ 5) -1 = 5 редова високо
  • ширина = 1 колона ширине

Да бисмо израчунали висину опсега у редовима, користимо функцију РОВ овако:

ROW()-ROW(B$5)-1 // work out height

Будући да РОВ () враћа број реда „тренутне“ ћелије (тј. Ћелије у којој живи формула), можемо поједноставити на следећи начин:

=ROW()-ROW(B$5)-1 =11-5-1 =5

Са горњом конфигурацијом, ОФФСЕТ враћа опсег Б5: Б9 директно у ЦОУНТИФС:

=COUNTIFS(B5:B9,"") // returns 4

Приметите да је референца на Б $ 5 у горњој формули помешана референца, са релативном колоном и закључаним редом. Ово омогућава копирање формуле у другу колону и даље рад. На пример, након копирања у Ц12, формула је:

=COUNTIFS(OFFSET(C$5,0,0,ROW()-ROW(C$5)-1,1),"")

Напомена: ОФФСЕТ је испарљива функција и може проузроковати проблеме са перформансама на великим или сложеним радним листовима.

Са ИНДИРЕКТНОМ и АДРЕСОМ

Други приступ је употреба формуле засноване на ИНДИРЕЦТ и АДДРЕСС функцијама. У овом случају, скупљамо опсег као текст, а затим користимо ИНДИРЕЦТ за процену текста као референце. Формула у Б11 би била:

=COUNTIFS(INDIRECT(ADDRESS(5,COLUMN())&":"&ADDRESS(ROW()-2,COLUMN())),"")

Функција АДДРЕСС се користи за конструкцију опсега попут овог:

ADDRESS(5,COLUMN())&":"&ADDRESS(ROW()-2,COLUMN())

У првом случају АДРЕСЕ, број реда додељујемо као кодирану вредност 5, а број колоне додељујемо функцији ЦОЛУМН:

=ADDRESS(5,COLUMN()) // returns "$B$5"

У другом случају испоручујемо „тренутни“ редни број минус 2, а тренутну колону функцијом ЦОЛУМН:

=ADDRESS(ROW()-2,COLUMN()) // returns "$B$9"

Након спајања ове две вредности заједно, имамо:

"$B$5:$B$9" // as text

Имајте на уму да је ово текстуални низ. Да бисмо претворили у важећу референцу, морамо да користимо ИНДИРЕЦТ:

=INDIRECT("$B$5:$B$9") // returns $B$5:$B$9 as valid range

Коначно, формула у Б11 постаје:

=COUNTIFS($B$5:$B$9,"") // returns 4

Напомена: ИНДИРЕЦТ је испарљива функција и може проузроковати проблеме са перформансама на великим или сложеним радним листовима.

Занимљиви Чланци...