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

#1 12. 4. 2017 10:03:24

luka7
Člen
Registrace: 20. 5. 2009
Příspěvků: 78

Výpis hodnot

Dobrý den, prosím o radu.
Vzorový soubor
Potřebuji do řádku vypsat hodnoty z třetího sloupce související se jménem v prvním (druhém) sloupci. V originále jde o skladové pohyby, takže stovky položek a tisíce pohybů.
Ve vzoru jsem to kopíroval>vložil jinak a transponoval. Jenže v originále to kvůli množství dat není možné.

Offline

#2 12. 4. 2017 10:51:10

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

Re: Výpis hodnot

To není korektní popis - Vy tam máte 3. listy - na jakém listu co udělat ??? 3 sloupce máte ve všech listech, ale těžba by měla být asi jen v některém z těch dvou posledních.


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

#3 12. 4. 2017 11:00:10

luka7
Člen
Registrace: 20. 5. 2009
Příspěvků: 78

Re: Výpis hodnot

Omlouvám se.
Výsledek v prvním listu.
Druhý list jsou vstupní data a třetí byl jen pro vytvoření dat.
Druhý řádek prvního listu je požadovaný výsledek daný kopírováním.

Editoval luka7 (12. 4. 2017 11:02:29)

Offline

#4 12. 4. 2017 12:40:27

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

Re: Výpis hodnot

Je to docela oříšek. Jedno řešení je vytvořit pomocný sloupec data.D kde bude číslo řádku =row().
Potom záleží na uspořádání dat. Pokud jsou tak uspořádaná jak máte v příkladu tak se to dá rovnou převádět, ale pokud jsou napřeskáčku, pak se musí nejdříve udělat kontingeční tabulka (KT) která data uspořádá: pořadí řádků bude: číslo, řádek, jméno, počet piv
Ve výsledném listu pak bude nepříliš hezký maticový vzrec odkazující se na KT (dejme tomu že levý roh KT je ve sloupci G v listu data), pak vypadá vzorec následovně:
{=TRANSPOSE(INDIRECT("data.J"&VLOOKUP(A2;$data.$G$2:$H$100;2)&":J"&VLOOKUP(A3;$data.$G$2:$H$100;2)-1))} (složené závorky se nepíšou a vzorec se ukládá trojhmatem ctrl+shift+enter)
Nevýhoda je že neúplný výčet se v případě kopírování matice doplní položkami #N/A, což není úplně hezký
Pokud jsou data uspořádaná tak jak máte v příkladu pak se může vzorec navázat přímo na data:
{=TRANSPOSE(INDIRECT("data.C"&VLOOKUP(A2;$data.$A$2:$D$100;4;0)&":C"&VLOOKUP(A3;$data.$A$2:$D$100;4;0)-1))} k vlookup je potřeba doplnit nulu neboť data nejsou seřazena


LibreOffice 5.2.2.2

Offline

#5 12. 4. 2017 12:48:05

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

Re: Výpis hodnot

Je to trošku problém, ale dá se to zmáknout. Tady je vzor Úprava Saturace
      Jde o to že to je maticový vzorec [funkce =TRANSPOSE(úsek)] ten je nutno zadat vysloveně textem a nikoliv vzorcem. Takže vzorec je docela složitý a je v sešitě jako vzor (1. list sloupec C2 až C6). Tyto vzorce najdou a vypíšou správný úsek z listu "data" ale pak to musí načíst TRANSPOSE už jen jako text a navíc se musí aktivovat matice.
      Matice se běžně aktivuje Ctrl+Shift+Enter - dnes se mi to prostě nezadařilo (možná jsem dřevák, nebo změnili aktivaci :-) Jde to bezpečně jen editorem funkcí (stojíme na buňce vzorce a stiskneme ikonu s tím "f" vedle Sumy).
      V editoru musíme zaškrtnout matici a potvrdit - a je tam výpis. Tedy nevím jestli je to na pracnost lepší nežli ručně transponovat, ale jestli je toho hodně tak spíš makro.


      Možná se dá maticový vzorec Transpose nahradit jiným který by vzal adresu z dalších vzorců, ale vzhledem k tomu že je asi vše jinak nežli mám odzkoušeno tak bych raději vyčkal na názor kolegy "lp." - snad se sem dostane.

Editoval neutr (12. 4. 2017 12:52:14)


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

#6 12. 4. 2017 13:06:35

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

Re: Výpis hodnot

Teoreticky by k vyřešení problému s vkládáním adres složených ze vzorců měla být funkce TEXTJOIN, ale to jsem zkoušel jak přímo vzorcem tak odkazem jak doporučuje nápověda - a nic. Pro mne je snadnější místo TextJoin používat "&", ale je možné to také zabudovat místo těch mých sloučených výrazů.
      Nevím jestli není chybou systému, že nemohu aktivovat matici pomocí SHIFT+CTRL+ENTER. Mám nejnovější LO 5.3.2.2 - Win. Možná že se to změnilo, nebo je to chyba - to by chtělo potvrdit. Mám už všelijakého testování plné zuby Testuji stejnou věc na Linuxu a Windows a pak ještě na LO i AOO. při tom musím přepínat na 3 stroje ach jo.... :-(


      Potvrďte prosím jestli Vám aktivace matic CTRL+SHIFT+ENTER funguje nebo je to chyba - či záměr jako změna syntaxe?

Editoval neutr (12. 4. 2017 13:09:12)


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

#7 12. 4. 2017 13:22:49

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

Re: Výpis hodnot

Tak jsem došel na lepší řešení: pomocí dvou KT. Nejdříve pomocný sloupec D s názevem Řádek =row()(jde o indexaci, každý řádek musí mít originální index), potom KT na poli sloupců A až D, pole řádku bude: číslo, Řádek, jméno, počet piv. Vedle výsledné tabulky se provedou dva pomocné sloupce jeden bude určovat pořadí hodnoty každé jednotlivé položky např. sloupec L: =IF(G3<>"";1;L1+1) (název sloupce bude "položky") a sloupec K bude zpět vracet všechny hodnoty čísla, které jsou v KT vynechané: =IF(L2=1;G2;M1) (název sloupce číslo_2) Na tom celém se znovu postaví KT s tím že bude uspořádána: pole řádku: číslo_2, jméno; pole sloupce: položky; datová pole: Sum-počet piv. A je to.
Pokud je položek tisíce, je toto určitě 100x vhodnější postup. Lze to provést během 20 minut a aktualizace v případě změny je hotová za 10 sekund.
https://www.dropbox.com/s/7oxrmlindb00j … 7.ods?dl=0


EDIT: ono tedy pokud budou data seřazena tak jak je v příkaldu, tak to řešení je mnohem jednoduší. Stačí jeden pomocný sloupec s názevem položky (počet piv 01, počet piv 02 ...) a KT lze snadno vytvořit rovnou bez pomocného mezikroku
https://www.dropbox.com/s/7blrvb9o747gq … 2.ods?dl=0


EDIT: ještě mne napadlo jedno řešení. Pokud budou data seřazena jako je v příkladě. Tak by se mohl vtvořit jeden pomocny sloupec s ozačením vždy prvního opakujícího se jména. V listu "množství" se pak v dalších pomocných sloupcích vygenerují čísla příslušných řádků a jejich počet a v tabulce se pak všechno už celkem snadno přeindexuje.
Pokud někomu KT nevyhovuje nebo ji neovládá tak toto je zřejmě celkem schůdné řešení. Transponování matic bych zavrhnul ...
https://www.dropbox.com/s/5mnduksui5xsb … 3.ods?dl=0
https://drive.google.com/file/d/0B3b5jU … sp=sharing

Editoval ludviktrnka (12. 4. 2017 19:44:19)


LibreOffice 5.2.2.2

Offline

#8 13. 4. 2017 12:50:23

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

Re: Výpis hodnot

Testoval jsem ten problém s maticemi a vypracoval jsem makro pro načítání matic Makra saturace 2017.


     Bohu žel ani makra neumí matice aktivovat. Je tam i něco málo nápovědy a tak bych rád odezvu - zda to někomu chodí jak má. Vše se nahraje ale matice nejsou aktivní. Musí se aktivovat po jednom vzorci pomocí správce funkcí - bohu žel nevím proč, ale rád bych zpětnou odezvu zda to někomu chodí, nebo zda se to někomu povede obejít. Díky


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

#9 13. 4. 2017 16:57:58

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

Re: Výpis hodnot

to neutr: mě Ctrl+shift+enter normálně funguje. Po spuštění vašeho makra jsou vzorce "sbalené", na každém řádku je zapotřebí dát kurzor do příkazové řádky a stisknout trojklávesu, pak to ale už funguje. Tož to jen jako feedback :-)

Např. pouhé stisknutí F2 a trojklávesa nefunguje - nejlépe funguje trojhmat s kurzorem v příkazové řádce. (jedině ještě F2 + mezerník + trojhmat, to také funguje)

Editoval ludviktrnka (13. 4. 2017 17:25:40)


LibreOffice 5.2.2.2

Offline

#10 14. 4. 2017 08:35:05

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

Re: Výpis hodnot

Pro Ludvíka Trmku.
     Děkuji za ochotu.
Už jsem také jakési řešení pro aktivaci našel ale je složitější nežli původní.


     Váš pastup je uveden také zde Zpětná kompatibilita - odkázáno z BugZilly.
     Mimo toho jsem prohledal BugZillu jak pro OpenOffice samostatně, tak pro LibreOffice. Na Libre je nahlášený bug Stisknutí CTRL+SHIFT+ENTER. Poslední zpráva je tam z dubna 2016 - stále neopraveno. Takže řešení je zde pouze pro manuální aktivaci - v podstatě takové jaké uvádíte Vy.


     Moje řešení spočívá v tom, že aktivuji F2 (klasický postup něco napsat a hned smazat mi nefunguje - ten jsem dříve už otestoval), následně INSERT (tím se zápis znovu zaregistruje) a pak teprve Ctrl+Shift+Enter. Je zajímavé že dříve jsem používal právě DELETE nebo BackSpace. Ale Úplně první mi fungoval INSERT - ten ale přepíná mód a musí se hlídat, takže se musí většinou stisknout 2x. Když se aktivuje více buněk tak si to člověk nepamatuje kde je Insert - "nahoře, nebo dole".


     Nyní mne trápí víc aktivace makrem. Mělo by to jít obejít pomocí OnClick a nasimulovat manuální spuštění. To je ale přímo ohavnost. Originálně se matice popisují jako funkce které nahrazují potřebu iterátoru (ten je zabudovaný a je limitován tuším na 1024 kroků - také si na to u maticových vzorců někdo stěžoval protože matice tento iterátor používají).
     Takže ono je svým způsobem nesmyslné programovat makra, které místo iterací cyklem For..Next napíšou matici a pak ji aktivují - je to drbání se pravou rukou za levým uchem :-)
     Zjistil jsem, že původní chyba u TRANSPOSE byla nahlášena v roce 2008. Tak jsem otestoval jestli by to šlo vyřešit například tříděním které umí totéž, jen navíc setřídí pole hodnot {=SMALL(úsek;COLUMN(úsek))} nebo podobně {=LARGE(úsek;COLUMN(úsek))}. A nic - ještě horší výsledek nežli u Transpose. Při tom to mám také moc krát otestované.

Takže dál budu hledat jak aktivovat makrem matice. Ne všechny matice potřebují udělat výpis do úseku. Tady na fóru byl výpis maticí použit jako návod mockrát. Jestli to tedy někdo namontoval do makra má problém.

Ještě jednou díky za reakci


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

#11 17. 4. 2017 13:10:54

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

Re: Výpis hodnot

Tak jsem to nedokončil - našel jsem nahlášenou chybu která se zřejmě vyskytuje opakovaně v různých podobách. Nejméně to bylo avizováno u několika různých funkcí jako je Transpose, ale i další statistické. Takže snad to bude zase někdy chodit jak má.


     Jenomže při různých pokusech aktiviovat jsem zjistil, že jsem ve vzorovém sešitě udělal chybu. Místo nalezení největšího počtu stejných hodnot (Modulo) jsem původně testoval Max - což je fatální chyba z hlediska systematiky.
     Takže jsem to opravil. A když už jsem byl v tom, tek jsem přidělal i řešení bez matic tak aby se dal sešit používat hned. Je to zde Oprava saturace 2017.


PS chyba se vloudila 3x za sebou jsem nahrál soubor s chybou. Zřejmě platí pravidlo do třetice všeho dobrého i zlého :-(

Editoval neutr (17. 4. 2017 15:01: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É

Offline

Zápatí