Když načtete CSV do Calcu (vyskočí dotaz na filtr - ten odsouhlasíte, nebo zvolíte jiný než nabídnutý - důležitější je volba separátorů) uvidíte vše jako text rozdělený do řádků a sloupců. Zásadně vkládejte do zcela prázdného listu.
Návod platí pro vkládání "obyčejného" (neformátovaného) textu obecně.
Problémy z toho plynoucí a chyby kterých se můžete dopustit dík malé, nebo žádné zkušenosti :
A - veškerý text je jen v jediné buňce.
B - Text je ve více řádcích a sloupcích, ale rozdělení je nesprávné.
C - Některé řádky obsahují zalomení které může vypadat jako rozdílná výška řádku, nebo je tam hyperlink.
Po vložení stiskněte Ctrl+END. Kurzor skočí na poslední buňku. Kvůli tomu v sešitě nemá být nic jiného nežli importovaný text.
Nyní poznáte kolik má import sloupců a řádků. Při tom se může stát, že stojíte v prázdné buňce a okolo této buňky nic vidět není.
Skočte o 1 buňku do pravé strany. Klidně tam napište třeba jedničku, nebo cokoliv jiného. To je nový "konec souboru" respektive poslední buňka pomocného sloupce ve kterém budou vzorce pro eliminaci prázdných řádků.
Nyní půjde o to, jak vypadá import po načtení - tedy podle možností A až C. Nejdříve si popíšeme nejčastější případ "bez záludností" - tedy text je v jediném sloupci (nejlépe A).
- PŘÍKLAD :
Text končí v buňce A100. Skočíme do buňky B100. Sem napíšeme vzorec podle toho s čím vystačíme.
1). - Nezáleží nám na pořadí řádků. Vzorec v B100 '=IF(A100 = "";1;"")'. Zkontrolujeme správnost tak, že ho nejprve zkopírujeme do úseku buněk B99:B101. V buňkách B99 a B100 by nemělo být vůbec nic, zato v buňce B101 by měla být jednička.
Nyní vzorec zkopírujeme do úseku B1:B100 (pomocí Ctrl+V).
Doporučuji hned poté (tento krok v takovém případě není nutný, ale jindy ano).
- Vzorce úseku načíst do paměti pomocí Ctrl+C (úsek je stále vybrán - je "modrý").
Ihned vložíme zpět jen jako hodnoty a text (pravé tlačítko myši - kontextová nabídka "vložit jinak" - zatrženo jen čísla, text popřípadě datum a podobně).
Následně úsek A1:B100 setřídíme podle sloupce "B". Prázdné řádky mají jedničku a jsou na konci. Stačí jednoduše vybrat Ctrl+End, hned poté Shift+Ctrl+šipka nahoru (vybrány jsou všechny jednice) a tyto smazat, nebo alternativně smažeme celý sloupec "B".
2).- Na pořadí řádků záleží :
Postup je stejný, jen je jiný vzorec a MUSÍ se po vykopírování vzorec načíst a vložit zpět jen hodnoty + čísla, popřípadě formáty jako je datum, měna ap.
Nyní vypadá pomocný sloupec jinak. Tam kde je v buňce "A" text je uvedeno číslo řádku, tam kde je prázdná buňka v "A" je také prázdná buňka v "B".
Opět setřídíme úsek A1:B100 podle sloupce "B". Následně můžeme sloupec "B" celý smazat.
ÚPLNÝ POSTUP
pro 1 sloupec textu včetně odstranění netisknutelných znaků
1.- Do pomocného sloupce (poslední buňka B100) nejprve vložíme vzorec
2.- Pomocný sloupec načteme zpět do paměti a vložíme jen jako text a čísla.
3.- Původní sloupec "A" odstraníme. Tím se původní "B" stane sloupcem "A".
4.- Nyní do pomocného sloupce vložíme eliminační vzorec - nejlépe ten který zachová pořadí :
5.- Opět načteme do paměti, vložíme zpět jen jako čísla a text.
6.- Setřídíme podle "B".
7.- Pomocný sloupec smažeme.
Vzorec "=CLEAN()" vyčistí všechny netisknutelné znaky, tedy také různá zalomení mimo hyperlinku (pokud smaže i hyperlinkové zalomení je to chyba).
ÚPLNÝ POSTUP
pro více sloupců textu včetně odstranění netisknutelných znaků
Předpokládáme, že pomocný sloupec může být ve sloupci "D"
1.- Do sloupce "D100" vložíme
Do sloupce "E100" vložíme
Do sloupce "F100" vložíme
Do sloupce "G100" vložíme
=IF(LEN(A100)+LEN(B100)+LEN(C100)=0;"";ROW())
2.- Úsek D100:G100 zkopírujeme do úseku D1:G100.
3.- Pomocné sloupce (D1:F100) načteme zpět do paměti a vložíme jen jako text a čísla.
4.- Původní sloupce "A,B,C" odstraníme. Tím se původní "D,E,F" stane sloupcem "A,B,C" + pomocný "D".
5.- Nyní načteme do paměti a vložíme zpět jen hodnoty pomocnéhosloupce (Nyní "D").
6.- Následně přetřídíme podle sloupce "D".
7.- Pomocný sloupec "D" smažeme.
Ostatní POSTUPY
zejména pokud je import v jediné buňce a jiné problémy.
Jedná se o problémy se separátory. Buď je provedena špatná volba separátorů, nebo v textu skutečně žádné nejsou. Často jde o text oddělený čárkami. Ty lze v importním filtru zvolit stejně jako jiné znaky a možnosti.
Problém může být s různými výstupy technologií - z logerů a podobně. Také možná některé výpisy z portálů. Tam je to většinou postaveno záměrně, aby si uživatel musel pořídit program který info přechroupe tak jak je potřeba.
Jsou to individuální případy a nemají paušální řešení. Platí, že je třeba vytipovat kde mají být nějaké separátory. Když na to nestačí volba separátorů,musíme si je udělat pomocí volby "Najít a nahradit". Při tom můžeme zadávat i regulární výrazy.
Takže pokud jsou údaje v jedné buňce a chceme například každý text začínající na "datum" do nového řádku zadáme najít "datum" - nahradit za "\n datum". Následně vše uložit jen jako text a exportovat jako .CSV, nebo .Txt. Tento soubor se po opětovném načtení už rozdělí do řádků.
Možností je také vložit CHAR(10), nebo CHAR(13) a podobně. Také je možné ještě vložit separátory pro rozdělení do více sloupců.
Uvedl jsem jenom ilustrační možnosti. Obecně by se našlo vícero postupů pro všechny varianty úprav importů. V podstatě jde o odhad co a jak. Já osobně pracují někdy v textovém editoru PsPad, jindy s CSValidátorem a podobně. Ale o zpracování textu by se toho dalo napsat mnoho. I tohle už je samo o sobě velice objemné - snad to pomůže :-)
Editoval neutr (19. 9. 2015 06:01:41)