Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 25. 3. 2019 07:01:18

ZdenekC
Člen
Registrace: 6. 10. 2010
Příspěvků: 42

v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Narazil jsem na problém v Libre. Mám v buňce definován vzorec. Např. v buňce B2 mám vzorec =B1. Libre však provede naprosto jiný výpočet. Když tentýž soubor otevřu v Appache Open Officu, vzorce fungují správně. Znovu otevřu v Libre - špatně. Znovu v Appache - správně. Pokud v Libre do dané buňky znovu zadám stejný vzorec, tedy v uvedeném příkladu znovu =B1, je výsledek správný.
Týká se to jen některých buněk, ostatní fungují správně.
Netušíte někdo, v čem může být problém?

Editoval ZdenekC (26. 3. 2019 09:45:58)

Offline

#2 25. 3. 2019 07:52:35

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,956

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Tam je asi důležité co je v té buňce, nebo sloupci B nastaveno. Může tam být něco z předchozích postupů. Existuje více možných důvodů. Například :

nápověda napsal(a)

Použití funkce Automatické vyplnění

Funkce Automatické vyplnění vytváří posloupnosti na základě daného vzorce.

    Na listu klepněte na buňku a zadejte číslo.

    Klepněte na vedlejší buňku a zase zpátky na tu původní. .

    Potáhněte za pravý dolní roh této buňky přes buňky, které chcete automaticky vyplnit, a pusťte tlačítko myši.

    Buňky jsou vyplněny rostoucí číselnou řadou.

Ikona tipu

Seznam po sobě jdoucích dní vytvoříte jednoduše tak, že do buňky zadáte Pondělí a potáhnete za roh buňky.

Pokud nechcete vyplnit buňky různými hodnotami, podržte Ctrl.
Ikona poznámky

Pokud vyberete dvě nebo více sousedních buněk, které obsahují různá čísla, a potáhnete, zbývající buňky se vyplní podle aritmetického pravidla, které je z daných čísel odvozeno. Funkce automatického vyplnění rozpoznává také vlastní seznamy, které jsou definované v Nástroje - Možnosti - LibreOffice Calc - Řazené seznamy.

     Jedná se zejména o přednastavené formáty, nebo jak výše uvedeno automatické seznamy. Doporučuji celý sloupec B (plus několik dalších pokud jste v nich dříve pracoval) smazat a otestovat znovu. Pokud se vám to nepovede bude nejlepší sem postnout ten sešit s popisovanou chybou.
     Ještě bych možná doporučil vytvořit nový list a tam to otestovat. V takovém případě tam žádné původně zavedené formáty nebudou. Existují i další možné důvody, ale nechci spekulovat. Takže pokud se Vám to nepodaří odstarnit, nejlepší bude dát sem vzor.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Online

#3 25. 3. 2019 08:16:50

ZdenekC
Člen
Registrace: 6. 10. 2010
Příspěvků: 42

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Funkci automatické vyplnění znám. Toto ale není ten případ. Nejde mi o opravu, ale zjistit důvod. Opravu mohu provést přepsáním vzorce, jak už jsem uvedl nebo přestat používat Libre a vrátit se zpět k Appache. Stalo se mi to sice poprvé, ale silně mě to znervóznilo. Pokud bych neměl zabudované další kontrolní vzorce, na chybu bych nepřišel a to by byl obrovský průšvih.

Editoval ZdenekC (25. 3. 2019 08:18:56)

Offline

#4 25. 3. 2019 10:04:13

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,956

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Já jsem uváděl automatické seznamy jako možnost původu. Řešením bylo navrhované smazání celých sloupců, nebo použití úplně nového listu. Původcem chyby bude nejspíš formát, který v buňkách zůstal po smazání původních dat. To se dá ověřit například takto :
     Zapište si do některé buňky například datum. Následně datum smažte a zavolejte volbu FORMÁT > BUŇKY. Potom uvidíte, že v buňce zůstává zachován formát datumu. Totéž se děje s procenty, měnou a tak dál. Konkrétně si zadejte například do sloupce B formát datum a nechte sloupec prázdný, nebo tam zadejte datum bez jakékoliv volby. Formát datumu zůstane zaznamenán v prázdné buňce. Následně do buňky B1 zadejte nějaké celé číslo. Do buňky B2 zadejte =B1. Objeví se přesně to co popisujete. V buňce B2 se objeví datum zatímco v buňce B1 je viídět číslo.

Editoval neutr (25. 3. 2019 10:19:35)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Online

#5 25. 3. 2019 12:11:23

ZdenekC
Člen
Registrace: 6. 10. 2010
Příspěvků: 42

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Tak znovu. Nejde mi o řešení konkrétního případu, (To znám, jak jsem už 2x uvedl.), ale o zjištění příčiny. Pokud ji nezjistím, je pro mne příliš riskantní takový software používat.
Dále: Formát by asi zůstal jak pro Libre tak pro Appache. Jak jsem výše uvedl, tentýž soubor se v Libre chová špatně, v Appache dobře. Problém bude jinde, ale kde?. V buňce je např. správně zapsáno =B1. V Libre sice je takto vzorec zapsán, ale provede se místo toho násobení několika jiných buněk. Anebo jen opsání jiné nežádoucí buňky. V Appache se správně provede to, co chci.

Offline

#6 25. 3. 2019 12:30:31

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,956

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Víte bez ukázky můžu jenom fabulovat. Postněte ukázku.

Editoval neutr (25. 3. 2019 12:30:56)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Online

#7 25. 3. 2019 15:11:14

ZdenekC
Člen
Registrace: 6. 10. 2010
Příspěvků: 42

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Fabulování je naprosto v pořádku, pokud chci mít pocit, že se mohu na software spolehnout. Jaké příčiny se tedy domníváte, že by mohly způsobit výšeuvedené problémy? V Libre špatně, v Appache dobře.

Offline

#8 25. 3. 2019 15:26:57

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 561

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Například =B1 tam opravdu máte nebo tam máte něco jiného? Domníval bych se že se to může týkat nějakých nekompatibilních funkcí. Pokud vzorec =B1 dělá nějaké sumy či jiné tak je to opravdu hodně divné a pochybuji že je to na dálku řešitelné.


LibreOffice 6.2.

Offline

#9 25. 3. 2019 16:30:27

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,956

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Asi by nám stačila kopie kde je pouze obsah B1 a B2. Vše ostatní můžete smazat. Víte ono je to těžké vymýšlet co vše by to mohlo být. Můžete mít nějaké makro které to přepisuje například při aktualizaci a při tom nemusí být ani ve vlastním sešitě, ale mezi "moje makra Standard".
    Problém může být v tom že Libre umí načíst makra VBA a Apache to neumí. Makra mohou reagovat i na individuální systém - jen pro Libre. Když by to nebylo to správné ořechové musí se hledat dál. Celkem nevěřím že by to byla chyba Libre. Je možné že používáte originální Excel? Možná je spíš chyba OS. Libre má mnoho věcí trochu jinak nežli Apache a je to také mezi vzorci kterých má Libre mnohem víc.
    Možná by to umělo automatické dokončování. To by se projevilo sice ve vzorci a bylo by to vidět v příkazové řádce, ale i to je možné. Takže bez ukázky na to těžko přijdeme, ale vyloučíme alespoň to, že chyba pochází ze sešitu.


    Ještě mne napadá, že byste mohl vyfotit obrazovku (udělat screen). Někam blízko zadat =FORMULA.
Například v C1 zadat =FORMULA(B1) a podobně pro B2 v buňce C2 = FORMULA(B2). Takže uvidíme na screenu co je obsahem buněk B1 a B2 a co je příčinou výsledku.
    Může jít například o problém s rekurzivním voláním výsledku B2 ze vzorce B1. Toto může fungovat pokud jsou zapnuté iterace a buňka B1 (ale i jiná) obsahuje =A1 + B2 v nějaké podmínce IF ap. Potom zabudovaný iterátor přepočítává dokud se někam nedopracuje. To se nastavuje například v NÁSTROJE > HLEDAT ŘEŠENÍ. Existuje jak Lineární tak nelineární řešitel - a ten v Apache není zabudován (i když existuje (existoval) jako rozšíření).

Editoval neutr (25. 3. 2019 16:32:29)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Online

#10 25. 3. 2019 17:37:30

ZdenekC
Člen
Registrace: 6. 10. 2010
Příspěvků: 42

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Dostal jsem tyto výsledky:
Formula(AM54)=AM53 Buňku AM54 jsem v předchozím textu pro zjednodušení označoval jako B1.
Formula(AM55)=AM54 Buňku AM55 jsem v předchozím textu pro zjednodušení označoval jako B2.
Přitom číselně je AM54=58 040,27 a AM55=49 037,87.

Stejné výsledky jsem dostal i na jiném PC. Sešit vznikl před lety v Appache, časem používán v Libre a časem s nepatrnými úpravami. Excel nepoužívám.
Stejné (špatné) výsledky jsem dostal jak pod windows 7, tak pod tailsem 3.13.1.

Editoval ZdenekC (25. 3. 2019 17:53:00)

Offline

#11 25. 3. 2019 19:22:37

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,956

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Sloupec AM je 39. sloupec. Pokud tam máte zadán vzorec může být ceklem vrácen například pomocí "Detektiva" (NÁSTROJE > DETEKTIV > PŘEDCHŮDCI nebo NÁSLEDNÍCI. Zde by se Vám vykreslili závislosti. 39. sloupec je jistě závislý na mnoha hodnotách které jsou také nějak závislé.


     Ubezpečuji Vás, že problém je někde v systému vzorců. Těžko si udělat představu bez reálné ukázky, ale celkem vylučuji chybu LO. Nejspíš tam máte redundantní (cyklické) volání které přepočítává možnosti. Podle Vašeho výpisu jde o řetězení hodnot na vyšší úroveň (řádek s větším pořadím). Ale jestli tam například v buňce AL (nebo jinoý sloupec) není nějaký návrat na hodnutu sloupce AM tak to nezjistíme.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Online

#12 25. 3. 2019 19:34:06

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 806

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Máte zapnutý přepočet?

Offline

#13 26. 3. 2019 07:27:57

ZdenekC
Člen
Registrace: 6. 10. 2010
Příspěvků: 42

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

lp. napsal(a)

Máte zapnutý přepočet?

Měl jsem nastaven automatický výpočet. Na základě Vaší rady jsem zadal "přepočítat ihned". A je to v pořádku.
Můžete mi, prosím, vysvětlit, proč automatický výpočet u některých buněk selhává? A to jen u některých. Proč u Appache problém nevzniká a u Libre ano?

Offline

#14 26. 3. 2019 08:48:32

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,956

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Automatický výpočet se při velkém objemu operací sám od sebe zasekne aby proběhlo zpracování v nějakém rozumném čase. Stává se to právě když se například zpětně ovlivňují buňky s proměnnými. Tam potom k podobným jevům dochází.
     Automatický přepočet se týká jen změněných hodnot. Ty které se neměnili zůstávají správně. Takže některé buňky jsou správně a ty které mají změnu prostě správně nejsou (je otázkou zda vždy, nebo jen nějakou náhodou). Ale to co popisujete určitě souvisí se vzorci, respektive s jejich změnami a nikoliv s tím, zda jde o LO, nebo AOO.
     Když se podíváte na nabídku přepočítat, tak AOO ji má pod volbou NÁSTROJE OBSAH BUŇKY > možnosti (PŘEPOČÍTAT, AUTOMATICKÝ VÝPOČET, AUTOMATICKÉ ZADÁVÁNÍ). U Libre je to jinak DATA > SPOČÍTAT (PŘEPOČÍTAT, PŘEPOČÍTAT IHNED, VZOREC NA HODNOTU, AUTOMATICKÝ VÝPOČET). To nám říká tolik, že AOO se zpomalí až třeba klekne. Když se tomu chceme vyhnout tak automatický výpočet deaktivujeme a pak použijeme PŘEPOČÍTAT). Také nám to naznačuje, že LO přistupuje k datům jako k databázovým hodnotám, ale AOO bere skutečně data jako data sešitu. Přestože zdrojáky jsou vlastně vždy databází.
     Libre se tak brání zpomalování a případným pádům. AOO tohle neřeší a buď spadne, nebo ne. Kolik je "hodně" těžko odhadnout, ale při řádu desítky tisíc vzorců už pády s úspěchem očekávejte.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Online

#15 26. 3. 2019 09:02:40

ZdenekC
Člen
Registrace: 6. 10. 2010
Příspěvků: 42

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Děkuji za vysvětlení. Z hlediska uživatele tak ani AOO ani LO nemají vstřícné chování. Volba mezi padajícím AOO nebo chybně vypočítaným (resp. nepřepočítaným) hodnotám LO je těžká. Pokud bych neměl zabudované kontrolní vzorce, vůbec bych nevěděl, že údaje jsou chybné. A neustále myslet na to, že musím zadávat příkaz "ihned přepočítat" je dost nepříjemné.

Offline

#16 26. 3. 2019 09:19:39

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,956

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Podle toho co uvádíte obsahuje sešit nejméně 49*55 buněk a proto lze předpokládat, že vzorců tam bude asi 50^2 = cca 2500. Jestli jsou řetězeny až do poslední buňky tak to je porce. Mám zkušenost, že jenoduchých - málo provazáných vzorců může být mnohem více a nepadá to. Jednotlivá buňka může obsahovat asi kilobite vzorců (RTF) a když je vzorec takto "těžký", tak jich uveze mnohem méně.
     Je tedy otázkou zda Vaše konstrukce nejsou zbytečně složité. Pokud to opravdu nejde lépe vzorci, tak je na místě uávažovat o makru které si poradí rozdělením operací. Může to ale také někdy trvat déle - zaleží na složitosti úlohy. Osobně si nemyslím, že by Váš problém řešili jiné tabulkové procesory lépe. Faktem je, že Libre Office má více vzorců a proto někdy poskytuje možnost nahradit složitou konstrukci efektivnějším vzorcem.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Online

#17 26. 3. 2019 09:44:23

ZdenekC
Člen
Registrace: 6. 10. 2010
Příspěvků: 42

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Ještě jednou děkuji všem za pomoc a vysvětlení.

P.S. Chtěl jsem označit příspěvek za vyřešený, ale v editačním oknu u prvního příspěvku mi nejde upravit předmět.

Offline

#18 28. 3. 2019 08:20:45

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 806

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

@neutr

"Vysvětlení" nechápu.  Že by 2,5 tis buněk byla "porce", kvůli které se musí vypínat automatický přepočet slyším poprvé.

Pokud připustím, že to tak je, tak by nefungovaly ani zmiňované kontrolní vzorce.

Spíše tipuji na nekompatibilitu mezi LO a AOO. Nastavení přepočtu je vlastností sešitu a balíky si možná nerozumí.

Vysvětlit uvedené chování bez sešitu nedovedu.


Pozn. Automatický přepočet se v některých případech skutečně vypíná. Přesné nastavení v jednotlivých balících si nepamatuji, ale neřídí se počtem buněk, ale počtem závislostí a limity se pohybují řádově v miliardách.

Editoval lp. (28. 3. 2019 08:24:39)

Offline

#19 28. 3. 2019 11:02:54

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,956

Re: v Libre provede jinou funkci, než je zadáno, v Appache funguje - proč?

Ano jde o počet závislostí, respektive vazeb mezi buňkami. Příkladem může být provázání jednoduchého typu mezi hodnotami v jediném řádku. Tam je dejme tomu v "A" a "B" vstupní hodnota. V řádku je 49 buněk a poslední je výsledek. Pokud se vztahuje provázání "jen jako jediný odkaz na jinou buňku" bude řádek obsahovat 47 jednoduchých vazeb. Pokud ale bude každý závislý odkaz odkazovat na dvě různé buňky, bude řádek obsahovat až "stovku" vazeb.
     Nehovořím při tom o možnosti že jsou odkazy rekurzivně zacyklovány a musí využívat iterátor. To znamená, že pokud se váží odkazy z poslední buňky až na první buňku, může být vazba až 2500 jednoduchých vazeb na poslední buňku. K tomu připočítáme posloupnost pro všechny jiné (předchozí buňky).
     Potom půjde přibližně o (n=1/2 z 2500)*2500 = cca 3 miliony operací které musí sešit udělat. Tady právě může dojít k různému chování. Při vypnutém přepočítávání se provede jen výpočet editované buňky. Musíme si uvědomit, že pokud se přepočítává pouze editovaný vzorec, nebude se zabývat proměnnými ze kterých čerpá.
     Když sešit začne u editované buňky a bude pokračovat směrem k prvním předchůdcům dostane se k větvení které je tím složitější, čím více vazeb je řetězeno. Zde se potom snadno dostaneme i k redundacím na stejných vazbách a počet operací může být mnohem větší (nemluvím o zacyklování iterátorem).
     Takže AOO nejspíš využívá uložené hodnory bez kontroly, zatímco LO nejspíš prověřuje všechny kořeny - to se ale můžu jen domnívat. Totiž LO má stajné nabídky, ale navíc má ještě přepočítat ihned. To mi říká, že projde až na poslední předchůdce. Automatický přepočet zřejmě vychází jen na nové hodnoty + uložené a předchůdce nepřepočítá.


     Lze předpokoládat například, že v každém novém řádku bude zavedena vstupní hodnta manuálně a coprocesor zde skončí. Další vzorce budou testovat předchozí buňky uložené před novým řádkem. Možná se vzorec spokojí jen s načtením výsledku a možná se zabývá jen chybou pokud nějaká vznikne.
     Představou je řetězení buněk asi jako spojení do jediného vzorce který vyhodnocuje postupně proměnné podobně jako když by byly v jediné buńce. Proto je asi důležitější kolik "kilobitů" takto "složený" vzorec obsahuje. Ty miliardy se týkají elementárních kroků. Úlohu zde možná hraje také zabudované OpenCL které by vedlo na rozdělení úloh a proto možná LO bez zapnutého OpenCL ukončí úlohy přepočtu dříve nežli AOO. Nevím jestli by se toto chování změnilo při zahrnutí grafické karty do výpočtu, ale myslím že ano. Bohu žel zatím se tomu nedá věřit zejména k tomu, že ne všechny grafické karty si s tím poradí. Nemí to starší typy a jeden typ nepodporovaných karet (nevím už který byl diskriminován - zřejmě protože nebyl uvolněn ovladač pro takové účely).
     Takže podle mne je lepším ukazatelem počet buněk se vzorcem, nežli objem jednotlivých vzorců v byte, nebo v elementárních operacích jádra. U vzorců předpokládáme, že obsahuje vazbu - průměrně jednu, nebo dvě a sice jednoduchého typu. Proto bude správně statistický průměr - ale ne vždy to bude pravda. Já jsem uváděl také jinou hodnotu kterou mám ověřenu - cca desítka tisíc jednoduchých vzorců.

neutr #14 napsal(a)

Libre se tak brání zpomalování a případným pádům. AOO tohle neřeší a buď spadne, nebo ne. Kolik je "hodně" těžko odhadnout, ale při řádu desítky tisíc vzorců už pády s úspěchem očekávejte.


PS:
Na základě informace že ve skutečnosti je odkázáno z buňky 55 na buňku 54 (sloupců 49) jsem usoudil, že může být řetězeno až 2500 vzorců do "jediného" výpočtu. Proto jsem počet desítky tisíc upravil na 2500. : první řádek až 47 vazeb, druhý řádek 2x tolik, třetí třikrát tolik....

Editoval neutr (28. 3. 2019 11:19:02)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Online

Zápatí