Excel formula: COUNTIFS s promjenjivim rasponom -

Sažetak

Da biste konfigurirali COUNTIFS (ili COUNTIF) s promjenjivim rasponom, možete koristiti funkciju OFFSET. U prikazanom primjeru formula u B11 je:

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

Ova formula broji neprazne stanice u rasponu koji počinje na B5 i završava 2 reda iznad ćelije u kojoj živi formula. Ista formula se kopira i lijepi 2 retka ispod zadnjeg unosa u podatke kao što je prikazano.

Obrazloženje

U prikazanom primjeru formula u B11 je:

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

Radeći iznutra prema van, posao postavljanja promjenjivog raspona obavlja funkcija OFFSET ovdje:

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

OFFSET ima pet argumenata i konfiguriran je ovako:

  • referenca = B $ 5, započinje u ćeliji B5, red zaključan
  • redovi = 0, pomak nule redaka od početne ćelije
  • cols = 0, offset nula stupaca početna ćelija
  • visina = RED () - RED (B $ 5) -1 = 5 redaka visoko
  • širina = 1 stupac širok

Da bismo izračunali visinu raspona u redovima, koristimo funkciju ROW ovako:

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

Budući da ROW () vraća broj retka "trenutne" stanice (tj. Stanice u kojoj živi formula), možemo pojednostaviti ovako:

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

S gornjom konfiguracijom, OFFSET vraća raspon B5: B9 izravno u COUNTIFS:

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

Primijetite da je referenca na B $ 5 u gornjoj formuli mješovita referenca, s relativnim stupcem i zaključanim retkom. To omogućuje kopiranje formule u drugi stupac i dalje rad. Na primjer, nakon kopiranja u C12, formula je:

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

Napomena: OFFSET je hlapljiva funkcija i može uzrokovati probleme s performansama na velikim ili složenim radnim listovima.

S INDIREKTNOM i ADRESOM

Drugi je pristup upotreba formule koja se temelji na funkcijama INDIRECT i ADDRESS. U ovom slučaju skupimo raspon kao tekst, a zatim koristimo INDIRECT za procjenu teksta kao reference. Formula u B11 bila bi:

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

Funkcija ADDRESS koristi se za izgradnju raspona poput ovog:

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

U prvom primjeru ADRESE, broj retka dostavljamo kao kodiranu vrijednost 5, a broj stupca dobivamo s funkcijom COLUMN:

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

U drugom slučaju isporučujemo "trenutni" broj retka minus 2, a trenutni stupac s funkcijom COLUMN:

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

Nakon spajanja ove dvije vrijednosti zajedno, imamo:

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

Imajte na umu da je ovo tekstualni niz. Da bismo pretvorili u valjanu referencu, trebamo upotrijebiti INDIRECT:

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

Napokon, formula u B11 postaje:

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

Napomena: INDIRECT je hlapljiva funkcija i može uzrokovati probleme s performansama na velikim ili složenim radnim listovima.

Zanimljivi članci...