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ý.