

Excel - proč funkce "když" nefunguje správně?
Excel 2007
Mám jednoduchou tabulku, porovnávám dvě strany rovnice
Levá strana: A+B-C, pravá strana X+Y.
Zadávám hodnoty do sloupců a porovnává se, zda rovnice souhlasí. Pokud ano, výsledkem kontroly (v dalším sloupci) má být "0", pokud ne, výsledkem kontroly je "1"
Přiložil jsem tabulku ve třech formátech, ve všech to ale v některých případech počítá špatně. Strany rovnice souhlasí, ale funkce "když" hlásí, že ne.
Čím to, proboha, může být?
Používám to jako kontrolu ve svém účetním systému, teď jsem na to náhodou narazil (sloupec "C" bývá v 99,999% případů prázdný, tak jsem na to nenarazil)
Používám čísla s dvěma desetinnými místy.
Všechny řádky tabulky jsou bez chyby, nicméně první, třetí a poslední chybu hlásí. Tohle není normální…
Co s tím? Nějaká vnitřní chyba Excelu? Pokud dám levou stranu vzorečku zaokrouhlit (až na 14 desetinných míst), je výsledek správně, tedy nula. Pokud na 15 nebo bez zaokrouhlení, je tam chybně ta jednička. A přitom u těch chybných výsledků jsou čísla jen na dvě desetinná místa.
Zkuste to někdo v novějším Excelu, já mám jen 2007, díky.
Není to chyba, ale známá vlastnost nejen Excelu. Počítač neumí přesně počítat s desetinnými čísly, vždycky je tam přesnost jenom na určitý počet desetinných míst.
No dobře, ale že (viz ten můj příklad) nepozná, že 20,1-20=0,1 ?? To se mi zdá už trochu moc.
30,5-30=0,5 OK
30,53-30=0,53 chyba
Nebo problémem bude to mínus?
Dočasně jsem tu kontrolu překopal, jak píšu výše, že na obou stranách rovnice je jen součet, to se zdá, že funguje bezchybně.
Zkoušel jsi to v novějším Excelu než mám já?
Excel vypočítá 20,1-20 jako 0,100000000000001. Ale opravdu to není záležitost jenom Excelu. Jakékoliv desetinné číslo se bere jenom s určitou přesností.
Excel mám nejnovější.
Aha.
Rozdíl 20,1-20, výsledek je s chybou na 15. desetinném místě. Součet stejných čísle je i 25 desetinnými místy přesně.
Zdá se, že v mém případě bude problém v "mínus" ve fci "když", tak to upravím.
Díky za nakopnutí.
Když to upravíš, tak budeš mít zase problém s jinými čísly. Jediné řešení je zaokrouhlování.
Jo, podívám se na to globálně a nasadím do těch (vlastně dvou) vzorečků zaokrouhlení na 2 desetinná místa, haléře.
Když to chceš řešit takhle, dal bych to na 3 místa (aby byla rezerva, se 2-mi by to mohlo v nějakém extrémním případě zahaprovat).
Nemusíš to zaokrouhlovat. Někde v nastavení bývalo, že aby to počítalo jen se zobrazenými čísly, ně i z těmi "za rohem". Bohužel, používám už jen LibreOffice tak ti neřeknu, kde to v nastavení najdeš, ale někde to je.
Našel jsem tohle:
Po aktivaci (a i případném uložení) se ale v těch mých tabulkách nic nezměnilo, pořád to ukazuje, že 30,53-30 se nerovná 0,53. Připadá mi to divné, protože podle nápovědy by to fungovat mělo.
Aha, funguje to trochu jinak..
Jako uloženou hodnotu buňky to bere opravdu obsah buňky a ne vzoreček v "když". Pokud si do pomocných sloupečků udělám součty levé a pravé strany rovnice a porovnávám ty, je to už OK. Porovnávají se ty pomocné buňky, kde jsou čísla zaokrouhlena na zobrazovaný počet, tedy v mém případě na haléře/2 desetinná místa.
Děkuji všem, už si s tím nějak poradím - když vím, kde a proč se objevuje chyba a jakými cestami jí předejít.