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

#1 3. 2. 2013 18:35:23

sevecmar
Člen
Registrace: 3. 2. 2013
Příspěvků: 2

Rozdělení sloupce do menších sloupců - VYŘEŠENO

Zdravím všechny,
prosím o pomoc s následujícím problémem. Mám výstup z programu (x-tisíc řádek), potřebuji pouze určité hodnoty. Ty, které potřebuji, se mi podařilo dostat do jednoho dlouhého sloupce. Mám 16 čísel pod nimi 12 mezer a opět 16 čísel. Takhle se to opakuje pořád dokola.

A co bych potřeboval je dostat těch 16 čísel do sloupců vedle sebe. Existuje na to nějaký jednoduchý postup? Přijde mi to jako celkem snadná věc, ale nemůžu na to přijít.

Díky za pomoc

Editoval sevecmar (4. 2. 2013 17:16:52)

Offline

#2 3. 2. 2013 21:47:04

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

Re: Rozdělení sloupce do menších sloupců - VYŘEŠENO

Je to opravdu snadné, ale trošku vtipu je potřeba. Ty následné hodnoty stačí transponovat ze sloupce do řádku. (Nejspíš do řádku, který odpovídá první hodnotě z oněch 16-ti.)
   Problematika je ve velkém počtu těchto operací. Předpokládám, že makrem bych Vám radost neudělal, proto popíšu manuální postup s předpokladem :
   Předpoklad - Ve sloupci A původní hodnoty, ve sloupci C získané (vytříděné, odfiltrované ap) hodnoty - tedy hodnoty jako čísla, nebo text a nikoliv jako vzorce. Hodnoty z "C" chceme do řádku tak, že se bude jednat o první řádek sloupce do kterého převrátíme sloupec (16 čísel). Předpokládáme, že první série hodnot začíná na C1 a končí C16. Proto převrácený (transponovaný) sloupec bude ležet v prvním řádku. Další už bude na řádku 29.
1.- Vytvoříme pomocný údaj ve sloupci "E" s tím, že vytvoříme kopie aktivních hodnot pomocí absolutních adres takto:
    Do E1 vložíme vzorec =C1. Tento vzorec zkopírujeme do úseku E1:E16. Následně stiskneme Shift+F4 a tím těmto 16 vzorcům naráz dáme absolutní adresy.
    Nyní jej vystříhneme a pomocí dialogu "vlořit jinak - transponovat" transponujeme do 1. řádku nejlépe do buňky F1 - nebo i jinam - je to jen zatím odložené.
2.- Do E1 vložte vzorec : =IF(MOD(ROW();28)=1;1;"")
    Tento vzorec kopírujte až na konec - tady například E1:E10000. Jakmile je tam nakopírovaný, tak celý úsek E1:E10000 načtěte do paměti, postavte kurzor do E1 a vložte zpět jako hodnoty (dialogem vložit jinak - jen čísla a text). Nyní dostaneme jedničky tam, kde začíná každý nový sloupec hodnot. Výhodou je, že mezi jedničkami nic není a my se z jedné na druhou dostaneme pomocí CTRL+šipka dolů (nahoru).
3.- Nyní se vrátíme k odloženému řádku. Ten vystříhneme a vložíme do E1. Znamená to, že data začínají E1 a končí T1.
   Tento úsek E1:T1 celý převedem zpět do relativních adres stejným grifem Shift+F4. Každě stisknutí ubere dolary z absolutní adresy. Musíme stisknout tolikrát, aby tam žádné nezůstaly (každé další stisknutí by opět vybavilo absolutní adresy - jde to dokola).
   Když už úsek E1:T1 nemá dolary, zkopírujeme ho do chránky. Postavíme se do E1 a stiskneme Ctrl+ šipka dolů. Skočíme na místo, kam vložíme kopii úseku E1:T1.
   Takto sice můžeme pokračovat až do konce, ale je to hloupé. Uděláme to jen asi 10x a načteme vše do paměti - tedy úsek E1: T290.
4.- V poli jména (těsně nad políčkem A1) přepíšeme údaj E1:T290 na E290 (smažeme jen 1:T - tedy střední hodnoty v adrese) - a Entr. Skočíme na poslední řádek s hodnotami, ale můžeme ho klidně přepsat a položit tam kopii úseku. Pak stačí toto opakovat jen několikrát.
5.- Pokud by aktivní hodmoty nezačínaly v C1, ale například v C8, tak použíjeme vzorec pro skoky ve tvaru : =IF(MOD(ROW();28+8)=1;1;"")
   Otestujte popřípadě číslo upravte tak, aby jedničky vznikly jen vedle první hodnoty sloupečku. Nezapomeňte vzorec vykopírovat jako hodnoty. Jedničky by byly sice vidět, ale skoky pomocí šipky by šly vždy na konec (nebo začátek).
6. Na konec Vezměte vše do paměti - úsek E1:T10000 a vložte zpět jako hodnoty.


Snad Vám to pomůže. Šlo by to i jinak, ale tenhle způsob je poměrně technický a hodí se Vám asi mnohokrát.

Editoval neutr (3. 2. 2013 21:55: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

#3 4. 2. 2013 10:28:05

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

Re: Rozdělení sloupce do menších sloupců - VYŘEŠENO

Zkusil jste nástroj   "data | Text do sloupců" ?

Offline

#4 4. 2. 2013 17:16:13

sevecmar
Člen
Registrace: 3. 2. 2013
Příspěvků: 2

Re: Rozdělení sloupce do menších sloupců - VYŘEŠENO

Díky za odpovědi, už mi to funguje.

Využil jsem uvedený postup, pak jsem odstranil přebytečné řádky a hodnoty transformoval (potřeboval jsem to v této podobě kvůli importu do gnuplotu). Získal jsem přesně to, co jsem potřeboval. Makro by bylo asi efektivnější, ale ten výpočet budu dělat asi 20x, takže manuálně je to zvládnutelné.

Offline

#5 5. 2. 2013 00:02:48

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

Re: Rozdělení sloupce do menších sloupců - VYŘEŠENO

Pokud to budete dělat víckrát, použijte funkci index.
Pokud jsou data v poli A1:A10000 a transformovaná tabulka začíná v B1 bude v B1

=index($a$1:$a$10000;(row()-1)*28+column()-1)

(druhý paremetr je vypočtená pozice prvku v původním lineálním seznamu na základě aktuální pozice)

Vzorec nakopírujte do přísloušných sloupců a řádků.
Pro pole (lineální seznam) použijte skutečnou velikost. Pokud bude funkce index hledat data mimo tento rozsah, vrátí chybu => snadno najdete, kde seznam končí.

Offline

#6 5. 2. 2013 00:12:00

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

Re: Rozdělení sloupce do menších sloupců - VYŘEŠENO

Další varianta např.: Použijte pomocné sloupce, třeba B a C se vzorci
vložte A1: "data"

B1: "sloupec"
B2: 1
B3: =if(a3=="";0;B2+1)

C1: "radek"
C2: 1
C3: =if(b3==1;c2+1;c2)

Vzorec zkopírujte podle celého sloupce. Slopec b obsahuje číslo sloupce pro transponovanou tabulku a sloupec C číslo řádku. Dál použijte kontingenční tabulku k transponování data. Výsledek můžete překopírovat podle potřeby.

Offline

Zápatí