Excel formula: saskaitiet redzamās rindas tikai ar kritērijiem -

Vispārēja formula

=SUMPRODUCT((range=criteria)*(SUBTOTAL(103,OFFSET(range,rows,0,1))))

Kopsavilkums

Lai uzskaitītu redzamās rindas tikai ar kritērijiem, varat izmantot diezgan sarežģītu formulu, kuras pamatā ir SUMPRODUCT, SUBTOTAL un OFFSET. Parādītajā piemērā formula C12 ir:

=SUMPRODUCT((C5:C8=C10)*(SUBTOTAL(103,OFFSET(C5,ROW(C5:C8)-MIN(ROW(C5:C8)),0))))

Priekšvārds

Funkcija SUBTOTAL var viegli ģenerēt summas un skaitījumus slēptām un neslēptām rindām. Tomēr bez palīdzības nav iespējams apstrādāt tādus kritērijus kā COUNTIF vai SUMIF. Viens risinājums ir izmantot SUMPRODUCT, lai piemērotu gan funkciju SUBTOTAL (izmantojot OFFSET), gan kritērijus. Šīs pieejas detaļas ir aprakstītas turpmāk.

Paskaidrojums

Būtībā šī formula darbojas, SUMPRODUCT iekšpusē izveidojot divus masīvus. Pirmajā masīvā tiek izmantoti kritēriji, un otrajā masīvā tiek rīkota redzamība:

=SUMPRODUCT(criteria*visibility)

Kritēriji tiek izmantoti, izmantojot daļu no formulas:

=(C5:C8=C10)

Kas ģenerē šādu masīvu:

(FALSE;TRUE;FALSE;TRUE)

Kur TRUE nozīmē "atbilst kritērijiem". Ņemiet vērā, ka šajā masīvā mēs izmantojam reizināšanu (*), TRUE FALSE vērtības matemātikas operācijas rezultātā automātiski tiks pārvērstas par 1 un 0, tāpēc mēs galu galā iegūsim:

(0;1;0;1)

Redzamības filtrs tiek lietots, izmantojot SUBTOTAL ar funkcijas numuru 103.

SUBTOTAL var izslēgt slēptās rindas, veicot aprēķinus, tāpēc mēs to varam izmantot šajā gadījumā, lai ģenerētu "filtru", lai izslēgtu slēptās rindas SUMPRODUCT iekšpusē. Tomēr problēma ir tā, ka SUBTOTAL atgriež vienu skaitli, savukārt mums ir nepieciešams rezultātu masīvs, lai to veiksmīgi izmantotu SUMPRODUCT. Viltība ir izmantot OFFSET, lai barotu SUBTOTAL vienu atsauci katrā rindā, lai OFFSET atgrieztu vienu rezultātu katrā rindā.

Protams, tas prasa vēl vienu triku, proti, piešķirt OFFSET masīvu, kurā katrā rindā ir viens skaitlis, sākot ar nulli. Mēs to darām ar izteiksmi, kas balstīta uz funkciju ROW:

=ROW(C5:C8)-MIN(ROW(C5:C8)

kas ģenerēs šādu masīvu:

(0;1;2;3)

Rezumējot, otrais masīvs (kas apskata redzamību, izmantojot SUBTOTAL) tiek ģenerēts šādi:

=SUBTOTAL(103,OFFSET(C5,ROW(C5:C8)-MIN(ROW(C5:C8)),0)) =SUBTOTAL(103,OFFSET(C5,(0;1;2;3),0)) =SUBTOTAL(103,("East";"West";"Midwest";"West")) =(1;0;1;1)

Un, visbeidzot, mums ir:

=SUMPRODUCT((0,1,0,1)*(1;0;1;1))

Kas atgriež 1.

Vairāki kritēriji

Jūs varat paplašināt formulu, lai apstrādātu vairākus šādus kritērijus:

=SUMPRODUCT((rng1=criteria1)*(rng2=criteria2)*(SUBTOTAL(103,OFFSET(rng,rows,0,1))))

Rezultātu apkopošana

Lai atgrieztu vērtību summu, nevis skaitīšanu, varat pielāgot formulu, lai iekļautu summu diapazonu:

=SUMPRODUCT(criteria*visibility*sumrange)

Kritēriji un redzamības masīvi darbojas tāpat kā iepriekš paskaidrots, izslēdzot šūnas, kuras nav redzamas. Ja jums nepieciešama daļēja atbilstība, varat izveidot izteiksmi, izmantojot ISNUMBER + SEARCH, kā paskaidrots šeit.

Labas saites

MrExcel diskusija ar Maika Žirvina un Aladina Akjureka Maika Žirvina burvju triku 1010

Interesanti raksti...