Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno EXCEL - poradit s výpočtem podmíněného součtu

Len opíšem, prečo je napísaný ten vzorec tak, ako je napísaný:

Pôvodný poľový vzorec (array formula) vyzeral takto:

=E35-SUM(($C$2:$C$31=H35)*($E$2:$E$31)*($O$2:$O$31<>""))
Tento vzorec sa dá zapísať ako štandardný vzorec pomocou SUMPRODUCT takto:
=E35-SUMPRODUCT(($C$2:$C$31=H35)*($E$2:$E$31)*($O$2:$O$31<>""))

Výsledný vzorec, ktorý funguje, vyzerá takto:
=E35-SUMPRODUCT(SUBTOTAL(103;OFFSET($C$2;ROW($C$2:$E$31)-ROW($C$2);0))*($C$2:$C$31=H35)*($E$2:$E$31)*($O$2:$O$31<>""))
Tento vzorec sa dá zapísať ako poľový vzorec takto:
=E35-SUM(SUBTOTAL(103;OFFSET($C$2;ROW($C$2:$E$31)-ROW($C$2);0))*($C$2:$C$31=H35)*($E$2:$E$31)*($O$2:$O$31<>""))

A teraz vysvetlenie k tomu, čím sa líši pôvodný vzorec od nového, ktorý zohľadňuje skryté riadky:

Obsah funkcie SUMPRODUCT (resp. SUM) je potrebné prenásobiť poľom s indikátorom, či je riadok skrytý alebo nie (indikátor bude nadobúdať len hodnoty 0 a 1, prenásobenie je logické AND). Jediný možný spôsob, ako vo vzorci odlíšiť skrytý riadok, je pomocou funkcie SUBTOTAL (t.j. lepšie riešenie, ak to má byť len pomocou vzorcov, neexistuje).

Pole s indikátorom obsahuje v sebe takýto vzorec:
OFFSET($C$2;ROW($C$2:$E$31)-ROW($C$2);0)
Na prvý pohľad to síce vyzerá, že sa tento zápis dá zjednodušiť na $C$2 (pretože ROW($C$2:$E$31)-ROW($C$2) je nula a OFFSET($C$2;0;0) je $C$2). Treba si ale uvedomiť, že výsledkom je pole, kde prvým prvkom je OFFSET($C$2;0;0), druhým prvkom je OFFSET($C$2;1;0), tretím OFFSET($C$2;2;0), atď. Vo výsledku je to teda pole s bunkami $C$2, $C$3, $C$4, atď. Toto pole sa vďaka funkcii SUBTOTAL stane poľom, ktoré nadobúda pre každý riadok hodnotu 0 alebo 1 podľa toho, či je riadok skrytý alebo zobrazený.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny