Faq/Calc/125/cs

Jak provést kumulativní výpočet pomocí iterací?
Kontext: Chcete sečíst následné hodnoty výsledku výpočtu. Jak postupovat, když víte, že v zásadě, když upravíte  "zdrojové" hodnoty pro výpočet, bude se výpočet opakovat a nebude si "pamatovat" předchozí hodnotu?

V následujícím příkladu bude výsledek výpočtu nalezen v buňce C7:

=C10-C13+C16



Chcete zachytit nové hodnoty v C10, C13 nebo C16 a výsledek operace přidat k předchozímu výsledku.

S určitými omezeními toho lze dosáhnout pomocí iterace.



Vysvětlení
 * Začněme s… možností opětovné inicializace akumulace. Dosáhneme toho pomocí hodnoty obsažené v "testovací" buňce. Například pokud C5 obsahuje nulu, akumulace bude znovu inicializována.


 * Dále musíme nastavit krok iterace pomocí nabídky . Definování na 1 vede ke 2 výpočtům. Nechceme však k akumulaci přidat dvakrát C7. Řešení je jednoduché: vydělíte kumulativní výsledek dvěma (viz výše v E7).


 * Minimální hodnota změny nepřímo definuje maximální zohledněnou hodnotu. Například s hodnotou 10 000 způsobí jakákoliv hodnota v C7, která je větší než 20 000, chybu 523 (Výpočet nekonverguje).


 * Pokračujme samotným kumulativním výpočtem. Výsledek, který má být akumulován, byl již proveden v C7, ale tuto buňku nelze použít jako zdroj pro akumulaci, protože je nutné, aby byla akumulace aktualizována, když se změní některá ze "zdrojových" buněk pro výpočet (jedná se o buňky zobrazené na snímku oranžově). Výpočet se proto opakuje v E7 spolu s testem na opětovnou inicializaci a nezbytným dělením dvěma:

=IF(C5=0;0;E7+((C10-C13+C16)/2))


 * Během načítání listu software přepočítává ... což je obtížné v případě kumulativních výpočtů. Měli byste proto učinit preventivní opatření pro deaktivaci tohoto výpočtu automaticky (nabídka') a poté výsledek "ručně" přepočítat pomocí kláves '.

V příkladu je list chráněn (bez hesla), takže jsou přístupné pouze oblasti, kde se očekává zadání dat.


 * [[Media:EN.CALC_Accumulating By Iteration.ods|Stáhněte si ukázkový sešit]]