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

#1 16. 10. 2014 11:53:30

allh
Člen
Registrace: 15. 10. 2014
Příspěvků: 8

Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Dobrý den,

potřeboval bych pomoct s touto věcí.
Mám tabulku s výrobky která slouží k importu dat pro e-shop. Jedna buňka v řádku obsahuje vlastnosti výrobku a text vypadá nějak takto:

"Záv.sv. E27 3x60W kov, textil"

Potřeboval bych hromadně u každého produkty vyjmout z tohoto textu poslední dvě slova a vložit každé slovo samostatně do prázdné buňky. V tomto případě "kov" a "textil".
Problém je, že tyto materiály se mění, takže slova nemají stejný počet znaků. Na druhou stranu, vím o jaké slova se jedná, protože je asi 10 materiálů, které se používají.

Již jsem toho zkoušel moc, ale nemůžu se pohnout z místa.

Díky za rady.

Editoval allh (17. 10. 2014 07:17:05)

Offline

#2 16. 10. 2014 12:27:23

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Asi bych do prvního sloupce dal substituci, lze celkem jednoduše libovolně nastavovat

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C66;"textil";"");"kov";"");"cokoli dalšího";"")

do dalšího sloupce soubor podmínek, též bude potřeba vypsat všech deset.

=IF(ISNUMBER(SEARCH("kov";C66));"kov";IF(ISNUMBER(SEARCH("textil";C66));"textil";zde další podmínky nebo nakonec""))

a nejhorší budou další slouce kde se budou muset prohledávat všechny předchozí sloupce pomocí funkce AND

=IF(AND(ISNUMBER(SEARCH("kov";C66));E66<>"kov" - zde i všechny předcházející sloupce);"kov";IF(AND(ISNUMBER(SEARCH("textil";C66));E66<>"textil"; stejně tak zde);"textil";zde další podmínky nebo nakonec ""))

Tzn. tento třetí vzorec se musí vykopírovat do dalších devíti sloupců a zároveň se musí přídat podmínky nerovnosti ke všem předchozím sloupcům (jinak by se materiál opakoval).

Editoval ludviktrnka (16. 10. 2014 12:37:59)


LibreOffice 5.2.2.2

Offline

#3 16. 10. 2014 12:46:16

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

To se dá udělat pomocí textových funkcí Zejména MID a RIGHT.
     Otestujte mezeru, která je mezi slovy pomocí IF asi takto například pro buňku A1 v buňce B1 :

=SEARCH(CHAR(32);A1;1)

- najde 1. pozici mezery což je ten CHAR(32), nebo zadáme mezeru mezi uvozovky takto =SEARCH(" ";A1;1).
     Pokud je tam více mezer dáme další hledání od aktuálně zjištěné pozice - ta je v buňce B1, takže do buňky C1 dáme vzorec :

=SEARCH(CHAR(32);A1;B1+1)

- toto najde druhou mezeru podobně třetí a další :

=SEARCH(CHAR(32);A1;C1+1)


Popřípadě můžeme nouzově použít hledání pomocí IF
=IF(MID(A1;3;1)= CHAR(32);3;IF(MID(A1;4;1)= CHAR(32);4;IF(MID(A1;5;1)= CHAR(32);5;0)))
Tahle forma vzorce ale není technicky správná - je pouze pro případ nouze. Avšak funguje na navracení nalezených textů mezi mezerami Například :

=IF(AND(B1 <> 0;C1<>0)=1;MID(A1;B1+1;C1);IF(AND(B1 <> 0;C1=B1)=1;RIGHT(A1;C1+1);"Chyba"))


--To je jenom ukázková návratová hodnota části textu - pro Vaší inspiraci :-)


     Jiný postup by byl hledáním těch Vašich 10-ti slov. Například zřetězíme vzorec :

=IF(SEARCH("kov";A1;1);"Kov";IF(SEARCH("textil";A1;1);"Textil";""))

     Ovšem zřetězit lze všechny hledané výrazy. Vypadat to může různě - to co Vám popisuji je jen pro inspiraci. Doporučil bych poslat ukázku. Také bych doporučil vyhledávat podle seznamu těch konstantních výrazů - vracet čísla a podle toho vypsat ořezaný začátek původního řetězce a pak ty nalezené konstantní výrazy.


     Řešil jsem už asi dva druhy eshopů a vím, že toho je dost, co budete potřebovat. Je to na makra zejména pokud provozujete více krámů na různých portálech a systémech.


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É

Offline

#4 16. 10. 2014 13:04:25

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Ještě mě napadlo: v každém dalším sloupci lze jeden materiál ubrat. Totiž pořadí ukládání materiálů do jednotlivých buněk je pevné, tady např. pokud je tam obsažen "kov" bude určitě pouze v prvním sloupci, pokud je tam obsažen "textil" bude buď v prvním nebo druhém sloupci. Tedy s každým dalším sloupcem lze jeden materiál ubrat, např. ve druhém sloupci již není potřeba testovat "kov" nboť ten (pokud tam je) tak je jistě vypsán v prvním sloupci. To by mělo proces značně zjednodušit.

A dokonce pokud víte že žádný výrobek neobsahuje více než třeba 5 materiálů, tak se situace zas ještě zjednodušuje a vzorců (sloupců) vytváříte pouze 5

Editoval ludviktrnka (16. 10. 2014 13:06:23)


LibreOffice 5.2.2.2

Offline

#5 16. 10. 2014 13:30:47

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

takže první sloupec (přibližně)
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C66;"textil";"");"kov";"");"dřevo";"");"kámen";"");",";"")
druhý sloupec
=IF(ISNUMBER(SEARCH("kov";C66));"kov";IF(ISNUMBER(SEARCH("textil";C66));"textil";IF(ISNUMBER(SEARCH("dřevo";C66));"dřevo";IF(ISNUMBER(SEARCH("kámen";C66));"kámen";""))))
třetí sloupec
=IF(AND(ISNUMBER(SEARCH("textil";C66));E66<>"textil");"textil";IF(AND(ISNUMBER(SEARCH("dřevo";C66));E66<>"dřevo");"dřevo";IF(AND(ISNUMBER(SEARCH("kámen";C66));E66<>"kámen");"kámen";"")))
čtvrtý sloupec
=IF(AND(ISNUMBER(SEARCH("dřevo";C66));E66<>"dřevo";F66<>"dřevo");"dřevo";IF(AND(ISNUMBER(SEARCH("kámen";C66));E66<>"kámen";F66<>"kámen");"kámen";""))
pátý sloupec
=IF(AND(ISNUMBER(SEARCH("kámen";C66));E66<>"kámen";F66<>"kámen";G66<>"kámen");"kámen";"")

No pro deset materiálů to bude krapet delší zápis, ale mělo by to jít, taky by šlo ty materiály někam uložit a pouze na ně odkazovat, ale zas to ztratí na přehlednosti.

Editoval ludviktrnka (16. 10. 2014 13:31:52)


LibreOffice 5.2.2.2

Offline

#6 16. 10. 2014 13:31:41

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Pozici před posledními 2 slovy najdeš vzorcem (je třeba mít ve vlastnostech volby, calc, spočítat zatržené "povolit regulární výrazy ve vzorcích")

 (Do B1)
=SEARCH("([:space:]+[:alnum:]+[.,]*){2}\E";A1;1)

Pozici před posledním slovem najdeš vzorcem

 (Do C1)
=SEARCH("([:space:]+[:alnum:]+[.,]*)\E";A1;1)

předpokládám, že slova odděluje mezera a za slovy může být tečka a/nebo čárka. Pokud tam může být i něco jiného, tak do dopiš do hranatých závorek. Slova jsou alfanumerické znaky.

Pak je to jednoduché:

=LEFT(A1;B1)
=TRIM(MID(A1;B1+1;C1-B1))
=TRIM(MID(A1;C1+1;1000))

(AOO)

Editoval lp. (16. 10. 2014 13:37:19)

Offline

#7 16. 10. 2014 13:59:43

allh
Člen
Registrace: 15. 10. 2014
Příspěvků: 8

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Předně moc děkují všem za rychlé reakce. Musím říct, že v práci s tabulkama jsem začátečník a proto jsem ve výsledku pohořel.
Udělal jsem proto ukázkovou tabulku a nahraju ji na můj server - http://www.compolux.cz/ukazka.ods. Jsou v ní naznačené situace, které mohou nastat - použil jsem jen 5 protože to nyní stačí.
Zkusím to ještě trochu přesněji nastínit. Potřeboval bych, aby se do řádku s materiálem tento materiál napsal, když ho popis obsahuje a když ho neobsahuje, tak aby zustala buňka prázdná. Materiály nemají pevné pořadí v popise - tzn. že například kov není vždy na prvním místě atd.

Díky za další případné rady

Editoval allh (16. 10. 2014 14:03:03)

Offline

#8 16. 10. 2014 14:04:59

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Tož to je ovšem mnohem jednoduší, na to ti stačí =if(isnumber(search($B2,C$1));C$1;"") a toto rozkopírovat všude kde je třeba

Editoval ludviktrnka (16. 10. 2014 14:05:22)


LibreOffice 5.2.2.2

Offline

#9 16. 10. 2014 14:21:33

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

pro ludviktrnka :
    Jde tam asi o to, že zadavatel allh potřebuje načíst výstupní materiál z portálu. Ten chodí někdy emailem v souhrnu jako CSV, nebo Excel, a nebo i jednolivě emaily objednávek. To je dáno typem použitého eshopu.
    Ovšem nemusí to být jen objednávka zákazníků. Může to být také nabídka dodavatelů, nebo jejich odpověď na poptávku majitele eshopu.


    Dejme tomu, že je to již naimportováno v nějaké formě tabulky - řekněme Excel. Ten musí být buď otevřen Calcem, nebo musí být data do Calcu překopírována,..(vložit list aj.)
    Pokud jde jen o jediný typ vstupu, postačí šablona, kde budou připraveny vzorce. Většinou a zejména po načtení CSV. Ale nevěřím moc tomu, že má jednotné vstupy. Potřebuje vzorcům sám dobře rozumět, aby je kopíroval a uměl sám upravit. Nemůže čekat 2 dni než mu někdo odpoví z fóra.


     Prodává "domácí potřeby" (elektro, textil ap) a obrátí se na něj odběratel se svým vlastním formátem požadavku. Při tom se zeptá, zda by mohl dodat ještě ta a ono, což v nabídce eshopu neviděl.
     Jak to vypadá snadno se stane, že v textu bude zalomení - CHAR(10) - a on v poptávce neuvidí vše. V podstatě se snadno připraví o velké kšefty. Objednatelem může být malá, nebo i velká firma, která sídlí bůh ví kde, ale v blízkosti sídla eshopu má zakázku, nebo jí vyhovuje promptní dodání pomocí TNT a podobně. Taková zakázka může být ve stovkých tisíc jako nic - chvilku jsem v tom dělal. Snadno se pak vyetabluje jako specialista elektro, nebo jen kovo ap.
     Problém je v tom, že ti co poptávají materiál, pošlou stejnou poptávku mnoha dodavatelům. Když se jim do termínu vrátí jako nabídka a je nejlacinější, popřípadě nejkomletnější s garantovaným termínem a místem doručení (někdy si jezdí i sami pokud má kamenný sklad, nebo obchod), tak dodavatel vyhrává - a vydělá. Může se vypracovat jako firma rychle. V jiném případě bude obdem posílat jednotlivé vypínače, nebo bužírky, či drobné nářadí a materiál v krabičkách od cigaret, nebo v dopisech. Bude to dělat jen jako vedlejšák při zaměstnání - neuživí ho to.


     Takže těch 10 kategorií jsou hlavní položkové parametry pro vyhledávání ve skladu. Pokud bude úspěšným eshopem, bude brzo potřeba mnohem víc vyhledávacích hesel. Nejen ve vlastním skladě. Bude se muset rozložit například kov na spojovací součástky, tyče, elktrody, nářadí........., dále elektro na instalace kabely, vypínače, izolačky, svorky, jističe,............, dále například tmely a jiné spíše stavební věci atd...
      Je tedy možné, že půjde jen o prodej zbytků materiálu po krachu, nebo prodej věcí z bazaru, exekucí, nebo jen domácích přebytků jako je ložní prádlo a použité oblečení. Zřejmě by to bylo vhodné řešení pro skomírající kamenný obchod se vším možným.


       Mám zkušenost, že obsluha eshopu (ale i většina jiných uživatelů) chce vždy jen to, čemu rozumí, nebo je schopna a ochotna porozumět - jako vzorci se kterým bude umět pracovat. Jiný typ lidí chce makro, které udělá na kliknutí potřebné a jiného nic znát nechce.
       Zde je zřejmé, že by sice specializované sloupce potřeboval, ale výsledek by měl být asi vedle sebe - což lze udělat velmi snadno, ale pak přijdou další požadavky. Nyní je možná potřeba mít kategorie vedle sebe, aby je jednoduše vytisknul a zajel do příslušného skladu. Například žárovky budou ve sklepě a tam bude ještě další materiál, který se nekazí - ale ne všechen. Za půl roku už může chtít specializovaný výpis pro sklad se sloupci - ale opačně číslo zakázky regál - typ sortimentu a počet.


       Mám živou představu jak podle vytištěného lístku "porcuje" materiál k vytištěným lístkům a kompletuje jednotlivé dodávky - nejspíš všechny za 1 den :-) - prostě nebude chtít všechny sloupce vedle sebe aby to bylo přehledné a co nejednodušejší. Jde zřejmě o začátek podnikání a uživatel musí dozrát představou zejména dík výkonu jeho ekonomiky.
       Prostě nejednodušší řešení je nejlepší. Až bude vědět více o svých potřebách (ne jen představy začátečníka) tak nám sem napíše něco víc sofistikovaného.

Editoval neutr (16. 10. 2014 14:28:33)


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É

Offline

#10 16. 10. 2014 14:56:48

allh
Člen
Registrace: 15. 10. 2014
Příspěvků: 8

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Pro neutr:

Ona ta situace se má takto. E-shop je založený na PrestaShopu a do něj lze importovat csv soubory. Náš firemní systém je bohužel trochu starý a umí "vyplivnout" jen takovou předpotopní tabulku. Na e-shopu je třeba mit různé filtrování - například dle materiálu. Tak se snažím z toho jednoduchého xls souboru co mám k dispozici dostat co nejvíc dat. Ono to není ideální možnost, ale ručně nahazovat větší množství položek není optimální řešení smile

Offline

#11 16. 10. 2014 15:07:11

allh
Člen
Registrace: 15. 10. 2014
Příspěvků: 8

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

ludviktrnka napsal(a)

Tož to je ovšem mnohem jednoduší, na to ti stačí =if(isnumber(search($B2,C$1));C$1;"") a toto rozkopírovat všude kde je třeba

Tohle mně háže chybu 508

Offline

#12 16. 10. 2014 15:17:04

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

No jestli je to xls soubor (tabulky Excelu) tak máte vyhráno. Já si myslím, že máte export z databáze. Tam by měly být určeny separátory a do calcu to načtete už rozdělené do buněk. To pak uložíte jako CSV s čárkami (ap).
      Calc má hodně importních filtrů pro databáze. Jakmile načte databázi, umí tuto vyplivnout jako sešit - tedy data v buňkách. Pokud se nemýlím, tak to je z formátu mdb (access). Ten by měl umět Caloc LO pomocí access2base přímo.
      Access ale umí export do CSV i opačně v pohodě - o jaký systém databáze se jedná? Možná existuje vhodný importní filtr pro Calc, nebo Base (možná jako rozšíření aj.)


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É

Offline

#13 16. 10. 2014 15:21:36

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

pardon poplet jsem pořadí ve funkci search má být =if(isnumber(search(C$1;$B2));C$1;"")


LibreOffice 5.2.2.2

Offline

#14 16. 10. 2014 15:23:16

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Tenhle vzorec ludvíkovi trošku ujel :
=if(isnumber(search($C$1;B2));$C$1;"") - špatně absolutní adresování v C1 je hledaný výraz a stojí stále na místě. Kopírovaný vzorec například pro řádek 120 by vypadal : =if(isnumber(search($C$1;B120);$C$1;"")
     Jde zřejmě o záměnu podmínky.
     Navíc ve vzorci není nepovinný parametr - který by to asi mohl zrychlit :-) To absolutní adresování jen řádku, nebo jen sloupce někdy funguje a někdy ne.

Editoval neutr (16. 10. 2014 15:31:04)


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É

Offline

#15 16. 10. 2014 18:46:05

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

neutr napsal(a)

     Navíc ve vzorci není nepovinný parametr - který by to asi mohl zrychlit :-) To absolutní adresování jen řádku, nebo jen sloupce někdy funguje a někdy ne.

Nechápu, co jste tím chtěl říci.
Můžete uvést příklad, kdy absoulutní adresování nefunguje?


Pro allh:

Občas se vloudí překlep, paradoxně častěji u jednoduchých vzorců. Pokud nejste schopen toto opravit (čárka místo středníku a otočené parametry), bylo by asi vhodné tuto činnost svěřit profesionálovi.

Offline

#16 16. 10. 2014 20:26:32

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Abych to nepopisoval vlastními slovy citruji nápovědu : Vrátí pozici části textu v řetězci. Možné je také nastavit začátek hledání. Hledaný text může být číslo nebo sekvence znaků. U hledání nezávisí na velikosti písmen..
     Jde o to, že lze nastavit od jaké pozice se bude hledat. Fungovalo by to jako zrychlení v případě, že je velký počet prohledávaných buněk, nebo i dlouhé řetězce. Pokud by samozřejmě bylo hodně prohledávaných buněk tak každé hledání obsahuje 10x celý zdrojový řetězec (10 sloupců). Když by šlo omezit počet znaků například o 10, tak se ušetří prohledávání 100 znaků na řádku. To už by vliv mohlo mít.
     Problém s těmi absolutními adresami je zkušenost. Existují 4 možnosti :
A : -  bez dolarů - příklad A1 - nedrží se při kopírování ani řádků, ani sloupců
B : - s jedním dolarem př   $A1 - drží se jen sloupce, ale řádku se nedrží.
C : - s jedním dolarem př   A$1 - drží se jen řádku, ale sloupce se nedrží.
D : - s dvěma dolary přík   $A$1 - drží se jen té jediné buňky.
     Dát do jednoho vzorce různě fixované adresy je o průšvih pokud to nepotřebujeme. Lidé to dělají zejměna asi proto, že ten dolar píšou jako znak (anglická klávesnice). Při tom funguje Shift+F4, což vybaví každou adresu dvěma dolary. Nemusíme dolarovat celou buňku, stačí vybrat jen jednu buňku Při $A$1:A9 stačí v editaci vzorce vybrat (vymodřit A1) a Shift+F4 tam vloží. Takový zápis úseku načítá od začátku k aktuální buňce.
     S jedním dolarem například A$1:A9 lze kopírovat do více sloupců. Ale použití A$1:$A9 nebo opačně může vést jen k průšvihu. Neznám ani důvod k šemu by se to hodilo. prostě postačuje jen jeden typ bloku ve vzorci.


      Dělal jsem s tím pokusy na velkých souborech Při prvním Shift+F4 se objeví oba dolary, při dalůším jeden dolar zmizí, Při třetím stisknutí se blok otočí. Při změně už nevím asi 1000 buněk a opakovaném přeblokování se mi to seklo spadlo a nemohl jsem to obnovit.
      Pak jsem s tím měl problémy. Bylo to sice ve spojitosti na iterace systému a návaznost maker, ale vlastní přeblokování jsem dělal ručně. Nakonec jsem musel itarece zakázat, přeinstaloval jsem klávesovou zkratku Shift+F4 a nakonec i celé OOo. Odstranil jsem to až smazáním historie v Document and Settings a novou instalací. Od té doby jsem ty operace už nezkoušel.


      Když jsou absolutní adresy nastaveny - pak už fungují většinou dobře. Když ale systém spadne a abs. adres je hodně, stane se, že to blbne. Většinou ne všechny, ale některé ztratí i dolary. Častěji se stroj zpomalí až třeba i usne. Samozřejmě nemůžu za to dát ruku do ohně - že to bylo absolutními adresami. Mohl to být důsledek jiné chyby, ale myslím že to byla příčina.
      Takže tohle patří mezi několik věcí, na které dávám pozor když zjistím chybu a zejména zpomalení.


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É

Offline

#17 16. 10. 2014 20:36:08

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

to neutr: fajn, nicméně jako obecnou poučku ohledně $ bych to asi nebral,  na to je to řek bych příliš individuální. Rozhodně se nedá říct že by vzorec "ujel". Dolary jsou tam tak, aby se vzorec správně roztahoval do obou rozměrů a myslím že "na druhý pokus" už to bylo bez chyby :-)


LibreOffice 5.2.2.2

Offline

#18 17. 10. 2014 07:13:14

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

K tomu mému příspěvku #14. V té době jsme psali současně všichni 4. Konkrétně já, ludviktrnka, lp., i allh. Napsal jsem příspěvek a odeslal. Po odeslání se mezi mým příspěvkem a tím na který jsem reagoval vyskytlo hned několik jiných.
     Je to dáno zejména rozsahem (já píšu litánie - to chvilku trvá). Mimo toho se zrovna v té době roztrhl pytel s novými příspěvky. Takže zavolám nově příspěvky a otevřu je na nových kartách.
     Napíšu příspěvek, odešlu a přejdu na další kartu. Tím se stane že často reaguji s velkým zpožděním zejména když neobnovím tu otevřenou kartu. Většinou se nestane, že píše víc přispivatelů. Takže tento problém se stane jen zřídka ale včera se to stalo.

     Takhle se stalo, že jsem viděl #11 - allh píše, že mu to nefunguje. Odpověděl jsem a odeslal zatímco na totéž odpověděl autor vzorce.
     Vypadalo by to logicky jinak, pokud bych byl rychlejší nežli ludviktrnka. Ale stalo se a můj příspěvek vypadá jako by byl reakcí na opravu #13. Když bych tento příspěvek #13 viděl, vůbec bych neodpovídal tím textem #14.
     ludviktrnka to opravil asi v půl čtvrté a pak se podíval znovu na příspěvky asi v půl devate - logicky se asi naštval. Omlouvám se - ale účelem nebyla kritika opravy, jen pokus popsat opravu tak aby tomu allh rozuměl.

     Fórum sice není přímo chat, ale když se na to podívá někdo další, bude asi přesvědčen, že chronologie je v pořádku a že jde významem o vazby mezi přímo následujícími příspěvky.

     To s těmi dolary je sice individuální poznatek a může mít opravdu jen subjektivní příčiny. Ale právě mnoho chyb balíku(ů) přetrvává, nebo se i po opravě opakuje. V nedávné době se opětovně vyskytly chyby odstraněné již před tím v minulosti. Myslím si, že je důlečité si stále pamatovat co kdy haprovalo přestože už došlo k nápravě. Jen hlupák se nepoučí z chyb v minulosti :-)
     Když uživatel hned napíše, že je začátečník snažím se odhadnout vše co bude k řešení problému potřebovat a píšu také vše o čem vím, že mu může udělat problémy - přestože se na to neptal.

     Dolarování sloupce ($B2) sice v tomto případě není zcela zbytečné. Když se na to podívá začátečník tak si bude myslet, že to tak být musí vždy. Je to tam jen proto, že se relativně snadněji stejný vzorec kopíruje do 10-ti různých sloupců. Když ale stejný vzorec použije jindy v jiném případě tak se nebude stačit divit co to dělá. Stačí aby například někam do tabulky vložil nebo odstranil pár buněk (nikoliv celé řádky, nebo sloupce) a vzorec do nich nakopíroval z té posunuté (a logicky nesprávné) části.
     Takže tohle by mělo být začátečníkovi vysvětleno. Pro každý z 10-ti sloupců (dle vzoru z příspěvku #7) by měl být uveden samostatný vzorec a popis proč to tak je - že je to jen kvůli kopírování. Př:

sloupec C > : =IF(ISNUMBER(SEARCH($C$1;B2));$C$1;"")
sloupec D > : =IF(ISNUMBER(SEARCH($D$1;B2));$D$1;"")
.........
sloupec L > : =IF(ISNUMBER(SEARCH($L$1;B2));$L$1;"")

     Pro snadnější kopírování (stejný vzorec pro všechny sloupce) použijeme tvar vzorce
=IF(ISNUMBER(SEARCH(C$1;$B2));C$1;"") Tohle bude potřebovat zejména někdo, kdo bude hledat podobné řešení někdy v budoucnosti. Najde ho ale nejspíš jen tehdy, pokud zadavatel napíše VYŘEŠENO - a to napíše právě proto a jen tehdy když bude úplně spokojen - porozuměl všemu :-)

     Já osobně pokud vím, že budu práci archivovat pro pozdější použití, tak sice k vytvoření polí vzorců dolar používám, ale nakonec po dokončení pole všechny dolary odstraňuji hledáním - najít a nahradit. Je to moje zkušenost. V určité době jsem stavěl něco hodně podobného řešiteli Sudoku s tím, že je to jen vzorci aby se to dalo použít i v Excelu a jiných tabulkových procesorech. Jedná se o substituční šifrovací matice typu Bergerových tabulek - tedy to Sudoku je obrovské nejen 9x9.

     Vychutnat si a ocenit vliv dolaru můžeme správně až když začneme pracovat s maticemi podobného typu. Jsou vynikající jen pro vytvoření konstrukce kterou můžeme (musíme) funkčně zkontrolovat. Ale pak pryč s nimi například proto, že se můžeme dostat na doraz stroje dík velikosti (objemu) znaků v buňkách. Když necháme ve vzorci dolary, dostaneme tam méně vnořených (řetězených) funkcí. Může to být rozdíl mezi snadnější a složitější koncepcí, nebo mezi rychlejším a pomalejším chodem stroje. Já prostě vím, že dolary jsou poměrně nebezpečné a nevhodné u velkých souborů.
     Jakmile velký soubor vytvoříme, je lepší dolary odstarnit - jsou pak jen zbytečnou zátěží a možným zdrojem chyb. Pokud je dolar nutný pro opakované kopírování, tak nechat jen jeden typ bloku, nebo nechat jeden vzorový řádek s dolary a zbytek smazat.


     Stejně se ukazuje, že řešením zadaného problému nejsou vzorce pro rozklad řetězce, ale správný export, respektive nastavení separátorů při importu. To je v podstatě jádro pudla. Z tohoto tématu se stane historie která by mohla pomoci jiným uživatelům.

Editoval neutr (17. 10. 2014 07:17:47)


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É

Offline

#19 17. 10. 2014 07:19:10

allh
Člen
Registrace: 15. 10. 2014
Příspěvků: 8

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Tak děkuju všem za pomoc, už to funguje jak má.
Ono s tím svěřit práci profesionálům. Byla by to jistě lepší varianta, ale objem práce je tak malý, že by to bylo podle mého mínění těžké. A čekat než se nahromadí věci také nemůžu smile

Offline

#20 17. 10. 2014 09:04:48

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

neutr napsal(a)

     Dát do jednoho vzorce různě fixované adresy je o průšvih pokud to nepotřebujeme. Lidé to dělají zejměna asi proto, že ten dolar píšou jako znak (anglická klávesnice). Při tom funguje Shift+F4, což vybaví každou adresu dvěma dolary. Nemusíme dolarovat celou buňku, stačí vybrat jen jednu buňku Při $A$1:A9 stačí v editaci vzorce vybrat (vymodřit A1) a Shift+F4 tam vloží. ...
     S jedním dolarem například A$1:A9 lze kopírovat do více sloupců. Ale použití A$1:$A9 nebo opačně může vést jen k průšvihu. Neznám ani důvod k šemu by se to hodilo. prostě postačuje jen jeden typ bloku ve vzorci.

Jinak řečeno, chybně napsaný vzorec je průšvih. A právě proto používám absolutní odkazy, aby bylo možné jednou napsaný vzorec dále kopírovat. Výsledkem je rychlejší tvorba výpočtu, rozšiřitelnost, čitelnost i méně chyb.

Výraz A$1:$A9 je sice špatně čitelný, ale když se na to podíváte důkladněji, zjistíte, že jde jen o jiný způsob zápisu pro pole $A$1:A9. Z hlediska fungování vzorce to není problém, ale vzorce mají být čitelné. Určitě takovou formu běžně nedoporučuji.

neutr napsal(a)

      Dělal jsem s tím pokusy na velkých souborech Při prvním Shift+F4 se objeví oba dolary, při dalůším jeden dolar zmizí, Při třetím stisknutí se blok otočí. Při změně už nevím asi 1000 buněk a opakovaném přeblokování se mi to seklo spadlo a nemohl jsem to obnovit.
      Pak jsem s tím měl problémy. Bylo to sice ve spojitosti na iterace systému a návaznost maker, ale vlastní přeblokování jsem dělal ručně. Nakonec jsem musel itarece zakázat, přeinstaloval jsem klávesovou zkratku Shift+F4 a nakonec i celé OOo. Odstranil jsem to až smazáním historie v Document and Settings a novou instalací. Od té doby jsem ty operace už nezkoušel.

Když se něco podobného stane je to jasně chyba. Zatím se mi to nestalo. Na druhou stranu, pokud mám větší blok vzorců, tak opravuji jen jednu buňku a až po odladění vzorce ho kopíruji do bloku.


neutr napsal(a)

Jakmile velký soubor vytvoříme, je lepší dolary odstarnit - jsou pak jen zbytečnou zátěží a možným zdrojem chyb. Pokud je dolar nutný pro opakované kopírování, tak nechat jen jeden typ bloku, nebo nechat jeden vzorový řádek s dolary a zbytek smazat.

V popisované praxi odstraňování dolarů ze vzorců se určitě neshodneme. V tabulkách pro jedno použití to není vůbec potřebné, pokud se sešit používá opakovaně, prakticky vždy vznikne potřeba něco opravit. Tvrzení, že každá větší tabulka obsahuje chybu je podle mých zkušeností pravdivá.
Navíc absolutní odkazy, zejména v bloku pomáhají pochopit logiku vzorce.

Odstraněním absolutních odkazů se nic nezíská. A pokud odstraní z listu, tak má zaděláno na problém v budoucnu, a pokud je důsledný a odstraní je například i z pojmenovaných vzorců (viz. názvy), tak má problém hned.

Uvedené pochopitelně platí pro případ, že absoulutní odkazy jsou používány korektně, např. tak jak je použil ludviktrnka, pokud je někdo používat neumí, používá je chaoticky a nesmyslně, pak připouštím, že jejich výmaz může prospět.

Offline

#21 17. 10. 2014 12:41:43

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

lp. napsal "Odstraněním absolutních odkazů se nic nezíská". To jistě není pravda. Už mnohokrát jsem hledal možnosti, jak zmenšit soubor protože bylo moc zpracovávaných údajů.
     Dost často lze odstraněním dolarů dostat víc vzorců do jedné buňky. Není to tak dávno kdy uživatel potřeboval snížit počet znaků v buňce. Když se jedná například o jedinou podmínku IF - například 10 znaků, tak je to skutečně frustrující. Já osobně se pak zabývám tím, jestli lze něco ušetřit. Například když tam potřebujeme výraz milion - 1000000 = 7 znaků, postačí 10^6 = 4 znaky. Podobně je to s těmi dolary jestliže máme podmínku IF($A$1=5;1;0) = 14 znaků. bez dolarů je to jen 12 znaků je to úspora asi 14% a její realizace pro všechny vzorce je velice snadná - najít dolary a odstarnit.
     U opravdu velkých souborů se vzorci - u těch tipnu 10-20% úspory - může být smazání dolarů tím, co rozhodne o rychlosti, nebo i o pádu. Jde samozřejmě o kapacity paměti a rychlost, algoritmy zpracovávání atd. Ale stejně vždy stroj musí číst sady instrukcí jako řetězec ze zásobníku. Takže čím je v zásobníku méně bitů, tím rychleji operace proběhne.

     Dovolím si podat malý důkaz. Včera LADER postnul soubor, který v AOO nechodí, ale v LO chodí. příspěvek LADER. Jde o soubor s iteracemi. Opravdu nejnovější AOO si s tím neporadí, ale LO 4.3.2.2 ano. Jenomže když vybavíme matici vzorců dolary - spadne také do chyby.
     Prostě stačí vybrat matici vzorců (musí být zapnuté iterace) a stisknout Shift+F4 a uvidíte sami - dolary způsobí chybu - nebo mi to někdo chce vymluvit? soubor můžete stáhnout zde PotencialNapeti.xls


      Ta přehlednost - je "výhodou" jen pokud uživatel ví - no a takový se na fóru neptá - spíš odpovídá. Začátečník vůbec neví k čemu ty znaky dolaru jsou, a už vůbec ne proč jsou někdy před písmenkem a jindy za písmenkem. Když to pak má užít jinde (protože to našel v historii - je to tedy slušný uživatel a nechce si to jen zjednodušit) tak má v hlavě guláš - začne zjišťovat co to je za znak, a co dělá.
      Musím přiznat, že jde o subjektivní názory a zkušenosti, ale o tom je fórum. Myslím že chyba se může stát vždy. Když bych si myslel, že jsem přestřelil - omluvím se.


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É

Offline

#22 17. 10. 2014 17:27:58

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Add velikost souboru.

Myslím že občas zpracovávám poměrně (na tabulky) dost velké soubory. Popisované problémy jsem zatím nepozoroval. Pokud by nastaly, pravděpodobně bych úlohu rozdělil nebo bych použil jiný nástroj. Takový přepych, abych ztrácel čas tím, abych do tabulky dostat o pár řádků víc si nemohu dovolit.

Add velikost vzorce.

Poslední verze oo mají tuším limit na délku vzorce 8kB. Osobně se snažím, aby vzorce nebyly delší než ca 100 znaků. Domnívám se, že důležité je psát vzorce tak, aby byly správné a kontrolovatelné. A delší vzorce tuto podmínku jistě nesplňují. Pokud vzorec vychází příliš dlouhý je obvykle možné použít jinou konstrukci nebo vzorec rozdělit. Rozhodně neoptimalizuji délku mazáním dolarů.

neutr napsal(a)

     Dovolím si podat malý důkaz. Včera LADER postnul soubor, který v AOO nechodí, ale v LO chodí. příspěvek LADER. Jde o soubor s iteracemi. Opravdu nejnovější AOO si s tím neporadí, ale LO 4.3.2.2 ano. Jenomže když vybavíme matici vzorců dolary - spadne také do chyby.
     Prostě stačí vybrat matici vzorců (musí být zapnuté iterace) a stisknout Shift+F4 a uvidíte sami - dolary způsobí chybu - nebo mi to někdo chce vymluvit?

Důkaz se moc nepovedl. Jde jen o to, že jste narazil na další chyby v LO (na AOO jsem se zatím nepodíval, může to být podobné.)

Pokud iterace před změnou odkazů vypnete, změníte na absolutní a zapnete, problém nenastane. Dá se to různě obejít. Horší je, že maximální počet iterací v oo nestačí na provedení všech výpočtů s nastavenou přesností. LO vrátí v buňce chybu a z toho se občas normálně nedostane (Excel na přepočet potřebuje cca 3000 iterací, max počet v LO je 1000). Je nutno nastavit počátek výpočtu, tj. max počet iterací a minimální přesnost (velké číslo, např. v uvedeném příkladu 0,01), dále ručně nebo makrem několikrát zopakovat výpočet a zvýšit přesnost. Po několika desítkách přepočtů se dostanete na přibližně správné hodnoty.

Co se týká přehlednosti a čitelnosti kódu, nevím co bych ještě dodal. Snad jen to, že i nováček by měl chápat rozdíl mezi absolutním a relativním odkazem.

Offline

#23 17. 10. 2014 19:18:20

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Ten důkaz se povedl. Ukazuje, že lze úspěšně ten soubor otevřít ať už jako XLS, nebo ODS pokud jsou iterace zapnuté. Prostě to chodí - bez nastovavání přírůstku a počtu iterací - implicitně 100 iterací s přesností tisíciny.
     Jakmile do tabulky vložím dolary - tak to nechodí. Můžeme udělat postup - vypnout iterace při zavřeném souboru, načíst soubor -  zase chyba.
     Je možné, že by se to dalo doladit pomocí většího přírůstku (přesnosti), ale já chtěl dokázat, že ty dolary způsobí chybu - v podstatě přetečení. Hlášení je číslo chyby 523 = "Výpočet nekonverguje" - nedosáhl dostatečného počtu iterací, ale pročpak to bez dolarů chodí? Prostě ty dolary to schodí - je to důležité pro výkon počítače. Odstraněním dolarů můžeme výkon zvýšit. V žádném případě nejde o chybu LO. Jde o bity v zásobníku.
     Prostě bez dolarů to jde a s nimi nikoliv - bez jakéhokoliv nastavování - rozdíl jen větší objem dat v buňkách.
     Může si to každý odzkoušet. To je výkon systému - větší vliv má HW.
-------------------------------------------------------------
     Objem dat buňky (v tomto případě se o systém - HW - nejedná) by měl být 60k pokud se nemýlím. 100 znaků je cca 8k (ale ne vždy je znak 8bitů - může být více, ale může to být i méně - zejména ASCII 7bit, ale užívá se v nějaké symbióze 8 bitů a snad i 16).
     Můžeme mít jenom třeba 10 buněk se vzorci - ale zato dobře nadupané. Lze li tam narvat 60 kB tak vše do této velikosti je dobře pokud je to syntakticky (a pochopitelně i sémanticky) správné, tak je to korektní postup. Věcí názoru je, zda je to "technicky" nebo funkčně "elegantnější" nežli rozdělené konstrukce.
----------------------------------------
     K těm nováčkům - přijdou i lidé, kteří pokládají za osobní úspěch zápis triviálního vzorce. Můžou to být chytré děti - snadno ze 2. třídy nebo i důchodce, který dostal počítač aby mohl na internet. Je mu 70 a jeho úspěchem je rozpoznání tabulkového procesoru od poštovního klienta. Napíšeme mu něco ošklivého nebo ho odmítneme ignorováním? Ten kdo umí napsat odkaz a z něj jednoduchý vzorec je normální a dost možná zdatný - ale začátečník.
     Pokročilejší už vědí jak na to, a prohledají nápovědu, nebo fórum. Podle dotazu se pozná že už něco opravdu umí. Tam bych se vysvětlováním takových základů nezabýval. I když i to se mi stalo. Docela schopný uživatel něvěděl jak zafixovat vzorce.
      Dost lidí se vymlouvá, že to uměli v Excelu - ale právě tomu moc nevěřím. V excelu přečetli vzorec, který někdo napsal. Tam tomu vzorci nerozuměli a tady samozřejmě také ne - ale mají výmluvu se zeptat :-) Přes to odpovídám i když vím, že chtějí svou výuku obejít - zajímá je výsledek a ne jak či proč se to udělá.


       Je jasné, že máme různé názory. Ale nemyslím si, že by ten můj ohledně dolarů a výkonu počítače byl zcestný. Také nemůžu souhlasit s tím, že začátečník má takové základní věci vědět. Tedy je možné že by měl povinně mít absolvováno bakalářské studium, ale takhle to jistě není.


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É

Offline

#24 17. 10. 2014 23:04:36

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Tak jsem sešit zkusil i v AOO.

AOO po otevření xls počítá vzorce od začátku. Pokud je soubor uložen jako ods, tak respektuje dříve vypočtené hodnoty (mimochodem, stejně se chová i excel - cizí/staré formáty po otevření implicitně přepočítává). LO ani cizí formát po otevření nepřepočítá, tak ukazuje to co spočítal dříve excel. Proto se také někomu může zdát, že v lo problém není a že vše chodí.

AOO i LO respektují nastavení iterací z otevíraného souboru. Nastavení programu ignorují. V zaslaném vzorku bylo nastaveno 100 iterací a přesnost 0,0001 a to je pro úplný přepočet s touto přesností málo, u AOO tak při otevření přepočet nedoběhne a vzniká chyba 523. Stejná situace vzniká u AOO i LO při změně odkazů na absolutní. Oba programy zahodí dříve vypočtené hodnoty a při malém počtu iterací výpočet nedoběhne opět s chybou 523.

Chybou AOO i LO je omezení maximálního počtu iterací na 1000. Pro tento výpočet to při přesnosti lepší než 0,001 nestačí. Další společnou chybou obou programů je chybové hlášení (chyba 523), ze které se při takto napsaných vzorcích nedostane. Lépe - chyba není problém, problém je, že nelze pokračovat ve výpočtu. Nutno znovu vložit vzorce a začít znovu. (měnit přesnost a ručně nebo makrem opakovat výpočet)

Proč average při změně odkazů v celé oblasti při zapnutých iteracích vrátí chybu dělení nulou zatím nevím, zajímavé je, že když se odkazy změní v oblasti bez jednoho sloupce a zbývající sloupec se přehodí v dalším kroku, dělení nulou nevzniká. Děje se v obou programech.

Další tvrzení, jako že 100 znaků je cca 8kB už raději nekomentuji.

Offline

#25 18. 10. 2014 07:18:22

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

Re: Hromadné vyjmutí určitých slov z buněk - VYŘEŠENO

Také jsem se podíval. Otestoval jsem LO i AOO. Aby nedošlo k záměně pojmů a dojmů raději uvedu to, co uvádí nápovědy :
-------------------------------------------------------
512 – Přetečení vzorcečíslo chyby shodně AOO I LO, rozdílné hodnoty
LO – Kompilátor: celkový počet interních symbolů (tj. operátorů, proměnných, závorek) ve vzorci přesáhl 8192.
AOO – Kompilátor: celkový počet interních symbolů (tj. operátorů, proměnných, závorek) ve vzorci přesáhl 512.
-------------------------------------------------------
513 – Přetečení řetězcečíslo chyby shodně AOO I LO, shodné hodnoty
Kompilátor: identifikátor ve vzorci přesahuje velikost 64 KB. Interpret: výsledek řetězcové operace přesahuje velikost 64 KB.
-------------------------------------------------------
514 – Interní přetečeníčíslo chyby shodně AOO I LO, shodné hodnoty
Řadící operace s příliš velkým objemem číselných dat (max. 100 000), nebo přetečení zásobníku výpočtu.
-------------------------------------------------------
523 – Výpočet nekonverguječíslo chyby shodně AOO I LO, shodné hodnoty
Funkce nedosáhla cílové hodnoty, nebo iterativní odkazy nedosáhly minimální změny v nastavených mezích.
-------------------------------------------------------
532 #DIV/0! - Dělení nuloučíslo chyby shodně AOO I LO, shodné hodnoty
Dělení nulou pomocí operátoru / Tuto chybu vrací i jiné funkce, například: VARP s méně než 1 argumentem STDEVP s méně než jedním argumentem VAR s méně než 2 argumenty STDEV s méně než 2 argumenty STANDARDIZE při stdev=0 NORMDIST při stdev=0
=======================================================
     Začnu raději od konce - to co lp. nekomentoval. Existuje víc faktorů přetečení. Je to zejména chyba 512 a 513. Na počet vzorců má vliv zejména chyba 512 - tedy AOO má 512 znaků pro vzorce - ale mimo čísel. LO jich má podstatně více. Ovšem za buňku se musí sčítat všechny 3 chyby (512,513,514). Není snadné zjistit kolik je už hodně. Jde to jen testem a vždy se to maličko odlišuje.
     Pokud budeme limitovat vzorce (samozřejmě pro jistotu) počtem 100 znaků, budou tam i čísla, která vzorec zřejmě limitovat nebudou (i když mohou - ale uvádí se 100000). Když si tipneme, že z těch 100 znaků bude 64 limitujících (nečíselných) tak je to 8x méně, nežli může AOO ve vzorci spolknout. Ten můj "podivný přepočet" vychází právě z empirické zkušenosti. Znak má 8 bitů. Přestože je to 8 bitů, tak vzorce mají nativní formát RTF - je to více bitů nežli u prostého textu. Zřejmě asi 10x protože oba zápisy jak viditelný (obyčejný), tak RTF musí být v paměti spolu za buňku zastoupeny. Lze předpokládat, že 1 znak ASCII je ve finále 2x32 bitů. V podstatě ta limita 512 znaků je ten formát RTF. Mám odzkoušeno z minulosti, že je to asi kolem 600-700 znaků (ale je to opravdu dost rozdílné). Pak tedy ten můj přepočet 8/60 = cca 100/700. Pochopitelně se promítne trošičku i vliv čísel.
     V souvislosti na ty dolary jde o nečíselné znaky které snižují počet operátorů, závorek ap. Odstraněním dolarů se objem vzorců v buňkách zvětší a není to zanedbatelné procento.


      Chyba výpočtu - dělení nulou je na první pohled nelogická, ale lze si to vysvětlit buď jako nevalidní označení chyby například jakou souhrnu různých souběhů ap. Tedy místo přesné identifikace jeden pytel pro víc příčin.
      Ale existuje také předpoklad, že přetekl zásobník výpočtu. Při iteracích se řetězec sčítá (narůstá) a poslední operací u AVERAGE je zřejmě dělení (Average není nic jiného nežli SUM/COUNT). Na ten COUNT - počet čísel už není v zásobníku místo a tak tam vletí nula - a máme příčinu jako vyšitou a se správnou identifikací.
      Je bez debaty, že dolary v souhrnu s iteracemi zmenší objemy. Testoval jsem to trošku a zjistil jsem docela zajímavou věc. Když se do Calcu (AOO i LO) dávají vzorce postupně, tak to Calcy vezmou - ale abych byl přesnější :
      U LO jsem načetl jeden sloupec z 80-ti (40 řádků) vše jsem smazal a začal vkládat sloupec po sloupci. Hned po vykopírování jsem mu dal Shift+F4. Prostě jsem zjistil, že při vložení dolarů do jedné buňky Calc počítá. Tak jsem otestoval jak to udělat (v souvislosti na příspěvek od LADER). Vjkládal jsem postupně sloupec po sloupci a vždy při tom vložil dolary. U 15. sloupce jsem toho nechal, ale vypadá to, že když se odlehčí zásobníku výpočtu, tak to zvládne celé i s dolary. Domnívám se, že při jiných vzorcích nežli s podílem by vyskočila chyba 514. AOO zvládlo se stejným postupem bez dolarů 8 sloupců a při opakování s dolary dokonce 12.
      Takže jde skutečně asi o přetížení zásobníku výpočtu (podávací paměť matematického coprocesoru). Vytlačit z počítače maximum asi lze jen pomocí správného vkládání úloh. Coprocesor je HW záležitost a proto by to mělo být u stejného stroje stejné. Program však podává výpočty různým způsobem. Takže LO zřejmě "lépe" nežli AOO. - Tady samozřejmě nevím - jen se domnívám jak se to provádí.
     Navíc jsem zjistil maličkost, která by mne ani ve snu nenapadla. Jakmile vznikne chyba, tak navrácením kroku zpět se ve zbývajících sloupcí chybové hlášení nezmění. Tedy je možné, že se to musí nechat znovu přepočítat, ale to by mělo být automatické (mám nastaveno). V minulosti se stávalo, že LO tuším verze 4.1.x.x dělala právě tohle. Při tom dočlo k samovolně k odškrtnutí (zakázání) přepočtu - což bylo vidět, ale než jsem na to přišel, tak jsem se zapotil. Tato chyba byla odstraněna, ale vypadá to, že jen na úrovni toho zaškrtnutí pro celý Calc. Je to také zřejmě podstata těch mých zkušeností s pádem po zadolarování.

Editoval neutr (18. 10. 2014 07:30:50)


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É

Offline

Zápatí