Pánové díky moc za rady. Jste machři!
]]>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.
]]>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)
]]>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.
]]>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ů.
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)
]]>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