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

#1 7. 1. 2012 16:00:53

MarekT
Člen
Registrace: 7. 1. 2012
Příspěvků: 3

Rozdělení dat do dalších buněk v řádku - VYŘEŠENO

Nazdar všem,
uměl by mi někdo poradit s následujícím problémem?
Po importu textu do calcu je v 1. buňce v řádku několik slov oddělených mezerou. Např.

pondělí úterý středa čtvrtek pátek sobota neděle

já bych ale potřeboval tyto slova rozdělit po dvou do dalších buněk v řádku.

|pondělí úterý|středa čtvrtek|pátek sobota|neděle|

Zatím jsem toho dosáhl pomocí: text do sloupců, sloučení sousedních buněk, rozdělení, smazání prázdné buňky. Totéž v sloupcích B a C, až k požadovanému výsledku.

Potřeboval bych toto nějak zautomatizovat, protože zpracovat takto přes 10 000 řádek je na dlouhé lokty.

Zkoušel jsem i makro, ale to se spouští pouze v buňce, kde bylo nahráno a která je tím pádem už zpracovaná.

Díky za radu.
MarekT

Editoval MarekT (9. 1. 2012 19:22:30)

Offline

#2 7. 1. 2012 19:31:55

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Rozdělení dat do dalších buněk v řádku - VYŘEŠENO

Vítejte na fóru

záleží na rozsahu dat. Pokud se budeme držet Vašeho příkladu, tedy 7 slov ve všech vložených řádcích pak stačí použít následující vzorce do příslušných buněk:

B1 =LEFT(A1;FIND(" ";A1;FIND(" ";A1)+1))
C1 =LEFT(SUBSTITUTE(A1;B1;"");FIND(" ";SUBSTITUTE(A1;B1;"");FIND(" ";SUBSTITUTE(A1;B1;""))+1))
D1 =LEFT(SUBSTITUTE(A1;B1&C1;"");FIND(" ";SUBSTITUTE(A1;B1&C1;"");FIND(" ";SUBSTITUTE(A1;B1&C1;""))+1))
E1 =SUBSTITUTE(A1;B1&C1&D1;"")

V A1 je zdroj
V B1 jsou první dvě slova, C1 druhá dvě slova..... v E1 zbytek

vzorce jdou upravit i na větší rozsah. Naopak při menším zdroji (méně než 7 slov) hlásí chybu. V každém případě jako poslední krok by mělo následovat zkopírování a vložení jako hodnoty (ne vzorec) a případné chybové hlášky odstranit pomocí najít a nahradit.

Pokud chcete použít makro, musíte naprogramovat cyklus, který projde jednotlivé buňky a rozdělí text dle vašich požadavků.


;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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 7. 1. 2012 23:46:10

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

Re: Rozdělení dat do dalších buněk v řádku - VYŘEŠENO

Na toto se hodí regulární výrazy. (Lépe v něčem jiném než v calcu - ten obsahuje nepříjemné chyby).
Pokud se to řeší v calcu tak lze postupovat následovně:

prvním krokem je úprava řetězce - každou druhou mezeru nahradíme znakem, která se v textu nevyskytuje (tady to nahradím svislou čarou "|")

menu Úpravy-najít nahradit

hledaný řetezec bude "([^ |]+ [^| ]+) (.*)" (bez těch uvozovek) - slovy: hledá se ("řetězec bez mezer a oddělovače" mezera "řetězec bez mezer a oddělovače") mezera (cokoliv do konce původního řetezce)
Nahradit bude "$1|$2"  (zase bez uvozovek) - slovy "Vrátit první skupinu" "místo mezery vrať oddělovač" "vrátit zbytek řetězce"

Rozbalte Více voleb a zaškrtněte regulární výrazy

Opakovaně zadávejte nahradit vše, dokud probíhá nahrazování.

(V jednom kroku by to sice mělo jít, ale v calcu je chyba, proto to opakování)

Druhý krok:
Na upravené buňky pusťte text do sloupců.

Offline

#4 8. 1. 2012 16:56:18

MarekT
Člen
Registrace: 7. 1. 2012
Příspěvků: 3

Re: Rozdělení dat do dalších buněk v řádku - VYŘEŠENO

Díky moc za rady.
Použil jsem první postup, který fungoval naprosto perfektně. Samozřejmě, že v takové hromadě dat musí být i pořádná porce odchylek, ale s tím si už poradím ručně. Funkce odvedly to nejhorší. Druhý postup zkusím, až budu mít chvilku času na původní data ve writeru. Člověk se pořád něco nového učí. Díky

Pro ostatní ještě jedna připomínka. Rozdělování a slučování buněk má tu nepříjemnou vlastnost, že při rozdělení nechává na konci řetězce mezeru a při spojení vloží další. S obojím si poradí funkce TRIM.

Kromě toho mám ještě jednu otázku. Jak v jednom sloupci nahradím první malé písmeno řetězce za velké? Našel jsem funkci PROPER, ale ta nahrazuje první písmena u všech slov v řetězci. Já potrěbuji jenom to první.

Díky.

Offline

#5 8. 1. 2012 18:45:10

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Rozdělení dat do dalších buněk v řádku - VYŘEŠENO

MarekT napsal(a)

Jak v jednom sloupci nahradím první malé písmeno řetězce za velké? Našel jsem funkci PROPER, ale ta nahrazuje první písmena u všech slov v řetězci. Já potrěbuji jenom to první.

zkuste

 = PROPER(LEFT(A1;1))&MID(A1;2;100)

kdy v A1 je text.


;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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 8. 1. 2012 18:55:13

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

Re: Rozdělení dat do dalších buněk v řádku - VYŘEŠENO

MarekT napsal(a)

Druhý postup zkusím, až budu mít chvilku času na původní data ve writeru.

Postup byl pro calc. Ve writeru fungují regulární výrazy lépe, stačí tedy hledat řetězec

"([^ |]+ [^| ]+) "  (na konci je mezera)

a nahradit za

"$1|"

Nahradit vše stačí zadat jednou.

Offline

#7 9. 1. 2012 19:21:24

MarekT
Člen
Registrace: 7. 1. 2012
Příspěvků: 3

Re: Rozdělení dat do dalších buněk v řádku - VYŘEŠENO

To zvětšování prvního písmene v řetězci funguje také perfektně.

Pánové díky moc za rady. Jste machři!

Offline

Zápatí