< návrat zpět

MS Excel


Téma: Umí Excel sčítat? rss

Zaslal/a 11.2.2016 2:03

To vypadá jako hodně hloupá otázka. Když odpovím, že ano, ale jen zhruba, vyvolám nejspíš dost emocí.
Jako už několikrát v minulosti, obrátila se na mne opět jedna z účetních, která bez Excelu při pomocných rozborech nedá ránu. Napsala si rafinovanou kontrolu dat, završenou testem na shodu křížových součtů. A co čert nechtěl, součty neseděly. Žádné pátrání po chybě nevedlo k cíli. Nakonec paní účetní vzala do ruky kalkulačku a výsledky z Excelu přepočítala. Asi už tušíte, že jí součty klaply. Lhal Excel, když jeho součty neseděly.
Kdo zná základy numerické matematiky, ten ví, že součtem libovolného počtu čísel s omezeným počtem desetinných míst nemůže vzniknout číslo s větším počtem desetinných míst. Takovou zásadu Excel nevyznává a snadno dodá součet zhruba správný, ale o fous jiný, než by se slušelo. Tohle Excel provedl paní účetní a její test shody proto nedopadl, jak dopadnout měl.
Rada nebyla složitá technicky, ale filozoficky. Musel jsem paní účetní sdělit, že Excelu nesmí až tak moc věřit a pokud v něm posčítá hodně čísel, musí výsledek navíc pro sichr zaokrouhlit, aby ho zbavila technických nečistot, které na sebe během sčítání mohly nabalit. Mám bohužel pocit, že jsem v paní účetní vyvolal pocit, že už nemůže věřit vůbec ničemu.
Sám jsem tímto šokem prošel před léty a od té doby si všechny účetnické úlohy převádím do celých čísel ("na haléře") a v nich provádím své výpočty. Teprve hotové výsledky vracím do řádu korun.
Nedávno mne tady na fóru upozornil Lubo na datový typ VBA Currency, na který jsem úplně zapomněl. Testy s tímto typem na přesnost součtu samozřejmě dopadly správně a bez rozostření dat. Nic takového na listu k dispozici není. Takže jinou spolehlivou možnost, než počítání v celých číslech k dosažení přesných hodnot, pro list neznám. Berlička se zaokrouhlováním moc cti Excelu nedělá.

Zaslat odpověď >

Strana:  1 2   další »
#030035
avatar
nechce sa mi verit ze pani uctovnicka potrebuje vysledok presnejsi ako 2 desatinne miesta :). Resp. nato jej Excel musel bohate stacit.citovat
icon #030036
eLCHa
@Palooo
Paní účtovníčky se musím zastat. Když to nečekáte a nevíte o tom, tak to dokáže pěkně potrápit.
Např. KDYŽ(A1=B1;něco;něco jiného) a ono to pořád dělá něco jiného, když víte, že to má dělat něco. ;)))

Kdysi dávno jsem v excelu našel a krátce zkoušel možnost pevných desetinných míst. Nevím jestli to byly 97, 00 nebo 03 ale někde jsem na to narazil. Pokud ta volba v excelu ještě je (nemám čas ji hledat a nechce se mi), tak by to pro paní účtovníčku mohlo být řešení. Pak by totiž situace neměla nastat a nemuselo se použít fce ZAOKROUHLIT.citovat
#030037
avatar
eLCHa: s funkciou KDYZ/IF su vzdy problemi a to nie len v exceli ... ked sa napriklad porovnava "Hello world " = "HelLo world" ... tieto preklepy su vsade ... aj ked pouzijete trim, lcase, like vzdy sa najde nieco co to nesplni.

chcel som tym povedat ze toto nieje Problem excelu ale uzivatela co to tam zadal.citovat
#030038
avatar
Palooo, asi jste na ten problém ještě nenarazil, ale standardní funkce listu SUMA má skutečnou chybu při sčítání velkého množství čísel s desetinnou částí. Pokud nevěříte tomu, co píšu já, věřte aspoň tomu, co napsal elCHa!
Je mi ovšem záhadou, že se autoři Excelu s tím problémem nikdy nepopasovali. Sám jsem si o něj rozbil hubu (jak už jsem napsal), a za posledních deset let se ke mně volání o pomoc v daném směru dostalo cca pětkrát.
Včera večer jsem své testy zopakoval. Problém přetrvává i v E-2010. Mám k tomu naprosto průkazný materiál, který jsem chtěl sem poslat, ale sešit byl moc veliký a z neznámých důvodů mi neodešla ani příloha JPG s ukázkou chyb.
Co je ale nejpodstatnější, podařilo se mi napsat UDF, která je k chybě funkce SUMA imunní a počítá správně.
Funkce vypadá následovně:
Function CurSum(Oblast As Range) As Currency
Dim Pole As Variant, Soucet As Currency
Dim i As Long, j As Long
Application.Volatile
If Oblast.Areas.Count > 1 Then Exit Function
Pole = Oblast
For i = 1 To UBound(Pole, 1)
For j = 1 To UBound(Pole, 2)
Soucet = Soucet + Pole(i, j)
Next j
Next i
CurSum = Soucet
End Function
Připadne mi dost úsměvné, že jsem to dokázal naprosto standardním výpočtem. Když to šlo mně, proč to dávno Microsofti neopravili ???citovat
#030039
avatar
Nakonec mne napadlo ten test zmenšit, takže sešit s ním snad už projde 1
Příloha: zip30039_currsum1.zip (194kB, staženo 37x)
citovat
icon #030040
eLCHa
Tak mi to nedalo a koukal jsem. Je to tam. Jmenuje se to
Při výpočtech v tomoto sešitu: Nastavit přesnost podle zobrazení

Tato volba vždy zaokrouhlí číslo podle formátu buňky. Pokud naformátujete buňku na 0,00 a napíšete tam 1,123 - vloží se 1,12. Stejně tak zaokrouhluje výsledky vzorců.

Pokud se s tím naučíte pracovat - máte po starostech.
Pro vědce to není, ale zrovna pro paní účtovníčku mi to příjde jako řešení.citovat
#030042
avatar
@eLCHa
Presne toto napadlo aj mne. Presnosť podľa zobrazenia.citovat
#030046
avatar
Nastavit přesnost podle zobrazení je vlastností pro celý sešit (naštěstí ne pro celý Excel, bohužel ne pro daný list). Máte pravdu v tom, že pro účetního je toto nastavení asi tím správným krokem. Jinak se proti němu některé manuály silně vymezují, protože může vést na nepřípustnou ztrátu informace. To se ale netýká účtárny. Proto to pokládám pro účtárnu za krok správným směrem. Musím se ale podívat, jak se takový sešit chová k číslům v neformátovaných buňkách...
Kvůli tomu ale neopustím myšlenku, že by tak základní funkce listu, jako je SUMA, neměla vykazovat vadu, která nedovoluje přímý test na shodu.citovat
#030061
avatar
O tejto chybe zu som niekde cital ... nieje to vobec ziadne tajhomstvo

V skratke ide o to ze Excel je upraveny nato aby pracoval s velkymi datami a aby mohol s nimi pracovat co najefektivnejsie je tam nastavena urcita nepresnost .... myslim ze to je na 8 desatinnych miest .... niesom si uplne isty

Preto by sa pani uctovnicka nemala s touto chybou nejak obavat kedze potrebuje zaokruhlovat len na 2desatinne miesta.citovat
#030062
avatar
tak isto sa da tento test urobit na kalkulacke skuste tam dat

5/5/5/5/5/5/5/5/5/5

a potom vysledok

* 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5

a ci vam vide 5

resp. cim viac sme to delili a potom spatne s nasobenim sme dostaval vysledok = 5 tak tym Bola kalkulacka presnejsiacitovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje