
Obecný vzorec
=SUMPRODUCT(costs,--(range="x"))
souhrn
Chcete-li vypočítat cenu balíčku produktu pomocí jednoduchého znaku „x“ pro zahrnutí nebo vyloučení produktu, můžete použít vzorec založený na funkci SUMPRODUCT. V zobrazeném příkladu je vzorec v D11:
=SUMPRODUCT($C$5:$C$9,--(D5:D9="x"))
Vysvětlení
Funkce SUMPRODUCT znásobuje rozsahy nebo pole a vrací součet produktů. Zní to nudně, ale SUMPRODUCT je elegantní a univerzální funkce, kterou tento příklad pěkně ilustruje.
V tomto příkladu je SUMPRODUCT nakonfigurován se dvěma poli. První pole je rozsah, který obsahuje ceny produktu:
$C$5:$C$9
Všimněte si, že odkaz je absolutní, aby se zabránilo změnám, protože vzorec je kopírován vpravo. Tento rozsah se vyhodnotí na následující pole:
(99;69;129;119;49)
Druhé pole je generováno s tímto výrazem:
--(D5:D9="x")
Výsledkem D5: D9 = "x" je pole TRUE FALSE hodnot, jako je tato:
(TRUE;TRUE;FALSE;FALSE;FALSE)
Dvojitý zápor (-) převede tyto SKUTEČNÉ NEPRAVDIVÉ hodnoty na 1 s a 0 s:
(1;1;0;0;0)
Takže uvnitř SUMPRODUCT máme:
=SUMPRODUCT((99;69;129;119;49),(1;1;0;0;0))
Funkce SUMPRODUCT poté znásobí odpovídající položky v každém poli společně:
=SUMPRODUCT((99;69;0;0;0))
a vrátí součet produktů, v tomto případě 168.
Účinně druhé pole funguje jako filtr hodnot v prvním poli. Nuly v poli2 zruší položky v poli1 a 1s v poli2 umožňují, aby hodnoty z pole1 procházely do konečného výsledku.
S jediným polem
SUMPRODUCT je nastaven tak, aby přijímal více polí, ale tento vzorec můžete trochu zjednodušit poskytnutím jediného pole na začátku:
=SUMPRODUCT($C$5:$C$9*(D5:D9="x"))
Matematická operace (multiplikace) automaticky vynutí hodnoty TRUE FALSE v druhém výrazu na jedničky a nuly, aniž by bylo nutné dvojitý zápor.