
Excel - hromadné oddělení prvních slov v buňce daného sloupce do předešlého sloupce
Nevím, jestli to Excel umí, ale zeptám se.
Mám v Excelu obsáhlý slovník. Všechno je v jednom sloupci. Chci, aby se první slovo v každé buňce (čili slovo, jehož význam je v onom slovníku popisován) oddělilo od zbytku textu v oné buňce. Čili aby se vytvořily dva sloupce. První sloupec - vždy jedno slovo. Druhý sloupec - popis významu onoho slova.
Nějaké možnosti? Jde o tisíce položek v onom sloupci.
Slova jsou oddělena mezerou?
Ano, ale problém je v tom, že některá slova jsou jednotlivá, někde jde o slovní spojení
Pak je to neřešitelné, pokud není slovní spojení odděleno od překladu jinak, než mezerou...
EDIT: Vlastně jo, dalo by se hledat poslední mezeru. Moment...
co to udělá?
To, co potřebuješ...
Já nevím úplně pŕesně co myslíš tím "poslední mezeru". Ty slova a slovní spojení, která je nutno oddělit, jsou na začátku, nikoli na konci.
Tak sem napiš nějaký vzor - co v té buňce vlastně je a co chceš oddělit...
Tak příklad obecně
AAA - 111
BBB - 222
CCC DDD - 333
EEE - 444
FFF GGG HHH - 555
III - 666
JJJ KKK - 777
písmena jsou slova, čísla popis jejich významu
A ta pomlčka tam je vždycky?
Tady...
A za předpokladu, že tam ta pomlčka nebude?
tvůj příklad dat zjevně nebyl příkladem těch dat, že?
Hľadanie poslednej medzery problém nerieši, keďže ako prvý výraz, tak ani nasledujúci výklad nie je jednoslovný.
POKIAĽ je však medzi prvým a druhým (vysvetľujúcim) výrazom jednoznačný oddeľovač (z Tvojho príkladu dedukujem, že máš všade pomlčky, na ktoré sa pýtal aj MaSo), možno ich od seba oddeliť alebo vhodným vzorcom (prvá časť je oddelená v mieste výskytu oddeľujúceho znaku a druhá časť je daná zvyškom dĺžky celého výrazu po oddelení prvej časti).
Samozrejme je potom potrebné prelepiť vzorce svojimi hodnotami. Následne môžeš prvý stĺpce vypustiť (označíš prvý stĺpec a CTRL - -)
Druhá možnosť je použitie nástroja "Údaje-Text na stĺpce":
Označíš celý stĺpec a zvolíš tento nástroj, ktorý má svojho sprievodcu. Postupne zodpovieš charakteristiku výrazu (časti sú od seba oddelené oddeľovačom " - ") a nastavíš typ oddeľovača ("iné" a zadáš pomlčku. Tu je problémik v tom, že sa nedá nastaviť viacznakový oddeľovač aký by sme potrebovali, t.j. " - ", čiže vrátane medzier) Sprievodca Ti ukáže ukážku výsledku a nasleduje ešte formátovanie novovzniknuvších stĺpcov, jednotlivo pre každý stĺpec (môžeš nechať všeobecne alebo prenastaviť na text. Dokončiť. (Takýmto spôsobom môže vzniknúť x nových stĺpcov, ktoré sú výsledkom výskytu oddeľovačom v rozdeľovanom výraze. Z toho vyplýva, že vo zvyšnej (vysvetľujúcej časti) by sa oddeľovač (pomlčka) nemal vyskytovať!
Tu nie sú žiadne vzorce.
Treba si však uvedomiť, že výrazy v prvom stĺpci majú za sebou vždy medzeru (tú ktorá bola pred pomlčkou, kde bol obsah rozdelený) a výrazy v druhom stĺpci majú pred sebou vždy medzeru (nasledujúcu po oddeľovacej pomlčke). Pokiaľ by Ti to vadilo, použi funkciu TRIM (myslím že po česky "Pročistit"), kde sa odoberú všetky nadbytočné medzery.
Prikladám upravený súbor, ktorý poskytol MaSo, kde červenou je výsledok MaSo-vej funkcie a za ním mojej.
Pokud by to bylo všude oddělené pomlčkami, tak by moźná bylo nejlepší
text do sloupců -> oddělovač -> pomlčka
problém ale je, tak ta pomlčka může být v jednom řádku (buňce) vícekrát, takže by se to někde oddělilo v pořádku, a někde by se to rozhodilo do několika sloupců
tak použi vzorec podľa zaslaného súboru.
Dalo by sa trikom nahradiť prvý oddeľovač " - " niečím iným a jednoznačným, ale to by znamenalo vzorce a týmpádom sa vzorcom nevyhneš.
Takže to rovno porieš tým vzorcom hneď.
Ďalšia možnosť je makro ale uvažovať týmto smerom je zbytočné, keďže funkcia Ti to porieši, bez potreby znalosti VBA.
P.S. Prehliadol som Tvoju poznámku "a keď tam tá pomlčka nebude?"
Neviem si predstaviť, že by si oba výrazy zlieval dohromady...
V tom prípade tam budeš mať nejaký iný oddeľovač, napr 3 medzery a pod. Potom upravíš vzorec namiesto hľadania reťazca " - " (medzera pomlčka medzera) dáš hľadať reťazec " " (tri medzery)... Všetko ostatné vo vzorcoch ostane tak ako je.
No ona tam ta pomlčka je, ale někdy je v dané buňce víckrát než jednou. Jak to například u slovníků bývá, když je pomlčkami naznačeno časování slovesa.
Pokud nemáš jasně dané oddělovací pravidla, tak je to neřešitelné...
Neviem, čo riešiš, zaslal som Ti súbor (10:53), kde máš vzorce, ktoré ošetria len prvý výskyt pomlčky (resp reťazca: medzera pomlčka medzera")!
Máš to VYRIEŠENÉ !!!
Keď máš naznačené časovanie, predpokladám, že pred koncovkami máš pomlčku naviazanú na príponu bez medzery.
Tým je to vyriešené, keďže vzorec hľadá výskyt reťazca "medzera pomlčka medzera"
Pokiaľ máš prípony časovania oddeľované takým istým reťazcom, je to blbé. Tak sa to nerobí...
Ani tak však nie je všetko stratené...
Dal by sa napr. spoznať reťazec, obsahujúci koncovku časovania a v takom prípade by sa nahradil oddeľovač "medzera pomlčka medzera" reťazcom "medzera pomlčka", čím by prvý výskyt reťazca "medzera pomlčka medzera" bol skutočne tam, kde patrí, t.j. medzi výraz a jeho vysvetlivku.
Pokiaľ napr koncovka časovania má napr dve písmená, dá sa napísať funkcia, ktorá z každého výrazu " - xx " urobí výraz " -xx "(Prikladám, avšak naraz dôjde len k jednej náhrade - snáď z príkladu pochopíš)
Podobne sa môžu upraviť aj trojpísmenné koncovky a pod... až kým neostane oddeľovač " - " len tam, kde naozaj má byť.
Problém takéhoto riešenia je v tom, že pokiaľ sa na začiatku vysvetlivky tiež vyskytne takýto reťazec, tiež dôjde k náhrade, čo pokazí potrebu ponechani pôvodného oddeľovača na rozhraní medzi výrazom a vysvetlivkou...
Keďže neviem, aký máš štýl tabuľky a aké a koľko typov prípon tam môže byť, je možné že takýto spôsob by bol zdĺhavejší, než manuálna náhrada reťazcov "medzera pomlčka medzera" pred koncovkami. Okrem toho, aj v prípade manuálnej opravy si môžeš prepisovanie týchto reťazcov uľahčiť vyhľadávaním (CTRL-F) reťazca " - ?? " (medzera pomlčka otáznik otáznik medzera" a tam to manuálne opravíš.
Priame nahradzovanie pri vyhľadávaní neviem poradiť, lebo neviem, ako nahradiť zástupné znaky "??" pôvodnými znakmi. Pokiaľ niekto v tomto poradí, prejdeš síce manuálne celý stĺpec ale celá tvoja úloha sa zredukuje na odsúhlasenie alebo neodsúhlasenie zámeny, kým nedosiahneš stav, že oddeľovač "medzera pomlčka medzera" ostane len medzi výrazom a vysvetlivkou a potom použiješ vzorec z mojej prílohy z 10:53)
Aaaalebo dáš príkaz CTRL H a dáš nahradiť výraz "medzera pomlčka medzera" za znak, ktorý sa určite nikde nevyskytne, napr. "§" ale len v miestach medzi výrazom a vysvetlivkou. A potom použiješ nástroj Text na stĺpce a dáš rozdeliť v mieste výskytu §. A je to!
Nevýhoda - musíš manuálne prejsť všetky nájdené prípady, ale zas Ti stačí odklikávať len "nahradiť" alebo "nenahradiť"
Ale jak udělám, aby se mi to přes CTRL+H nahradilo jen tam, kde potřebuju? A ne i tam, kde je ta "pomlčka" jakoby navíc? (čili kde neodděluje slovo/sousloví od významové části
Klikat to po jednom.....jsou to desetitisíce položek...
jedine nejakým charakteristickým rozlíšením prípadov, kde to má nahradiť od tých, kde to nemá nahradiť.
Tak ako písal MaSo, musíš mať jednoznačný oddeľovač. Inak Ťa čaká manuálna práca, ktorú si aspoň čiastočne môžeš zľahčiť
To by sme potom ale vedeli vyriešiť i vzorcom a nemusel by si manuálne...
Fakt tam nenájdeš niečo charakteristické, čo by sa dalo využiť na rozlíšenie tej prvej časti od vysvetlivky?
Veď urob nejaký úryvok a prilož...
A když to tedy budu chtít oddělit vždy na první mezeře (na konci prvního slova zleva), tak to udělám jak?
Deláš si prdel? To máš v hned první moji odpovědi...
nojo, ale jak ten vzorec použiju
Tak na to nemám...
přes vložit funkci mi to nejde
Třeba je to tím že MaSo poslal příklad z anglické verze excelu a ty máš českou?
Ano mam českou
No tak si ty funkce musíš přeložit do češtiny, že
Já jsem nikdy takového funkce v Excelu nepoužíval... nevím přesně jak na to :)
A tak by to chtělo přiložit REÁLNÝ vzorek toho souboru .. jak jsou dělané mezery, jaká tam jsou případná slovní spojení. Že jsi napsal
AAA - 111
BBB - 222
CCC DDD - 333
to fakt moc nepomůže, když reálně to vypadá jinak. To opravdu nemůžeš vložit ten excel třeba jen ořezaný na pár řádků?
Salve Hospes — „Vítej, hoste!“
salvo iure — bez porušení práva
sanctimonia, ae f. — svatost, bezúhonnost
sanctimonialis, is f. — jeptiška
sanctum et gloriosum opus — svaté a slavné dílo
sapientia, ae f. — moudrost
sartor lignorum — struhař, prknář
oddělit první slovo
vždy první slovo zleva oddělit
.. takže oddělovač je pomlčka?
Přes pomlčku to lze snadno oddělit přes "text do slopců" - to umím.
Chtěl bych ale oddělit vždy první slovo zleva. Problém je (jak vidíš), že někdy je za prvním slovem zleva mezera, někdo např čárka atd.
Chci tedy oddělit první slovo zleva u všech buněk v celém sloupci.
Uveď příklad jak to chceš mít rozdělené pro řádky 1 a 4 ..
Salve (konec buňky)Hospes — „Vítej, hoste!“
sanctimonialis (konec buňky), is f. — jeptiška
prostě první slovo zleva oddělit vždy
Že v tom slovníku není popisován význam slova chápeš?
Chci oddělit první slovo od zbytku, chápeš?
To pak ten slovník ale jaksi ztrácí význam, ne?
Chci to oddělit proto, že budu postupně přidávat nová slova a výrazy, a chci si takto ověřit, zda tam daná slova již nejsou.
Nejdříve oddělím slova, poté přidám do sloupce nová slova, potom vymažu duplikace
Aha, takže už jsi se vrhnul na svůj vlastní "slovník".
Asi Ti moc nevadí, že Excel na tyhle věci není zrovna ideální a asi nevíš, že třeba v databázi (stačí i MS Access) bys tohle hlídání duplikátů měl zautomatizovaný do té míry, že by Ti to vůbec nepovolilo založit duplicitní pložku...
Jenže ona ta poloźka nemusí být zcela duplicitní, protože popis dané slova se může lišit, nemusí být doslovně stejný.
Ale pokud mažeš v Excelu duplikace podle prvního slova (což jsem podle Tvýho popisu pochopil), pak teda na zbytku nezáleží.
Samozřejmě vhodným návrhem databáze se dá ošetřit spousta věcí, třeba i ty alternativní popisy.
Je to trochu jinak. Mám určítý základ (seznam slov), kde je význam slov popsán. A já postupně přidávám do tohoto základu další a další slova. A abych zjistil, jestli už tam dané slovo není, použiji první slovo každé buňky (slovo, jehoź význam je v dané buňce popisován) a tomu přidám seznam nových slov, která chci přidat. A aby tam jedno slovo nebylo vícekrát, použiji vymazání duplikací. Potom uź nemusím řešit, zda se popis významu daného slova drobně liší nebo ne.
Jak chceš popisovat význam slov, když to nejsou slova, ale celé výrazy? To rozdělení na první slovo versus zbytek nedává smysl. Navíc sis k tomu vybral tabulkový procesor.
Ano je to tabulka. A každá buňka = 1 slovo/1 výraz + jeho popis
MS Access sice moc nepoužívám, ale v principu by to tam asi fungovalo podobně
Však si to dělej jak chceš, jen jsem Tě chtěl upozornit i na jiný možnosti, který jsou - dle mýho názoru - na tuhle práci vhodnější (stejně jsem z toho popisu moc nepobral...).
Tak jaké třeba? Ale musíš brát v potaz, že nejsem zrovna odborníkem... :) snažím se to dělat tak, jak to umím, aby to bylo pro dané účely funkční
Radám se beze nekladou
Nevim jestli je MS Access lepší. Používám Excel. Všechno je v jednom sloupci a každá buňka obsahuje jedno slovo.
a to sú ešte slabo vyvalené oči...
Případ jen s mezerami řešil vzorec v úplně prvním příspěvku. Pokud tam máš i čárky, potřebuje jen "mírně" upravit. Přeloženo pro CZ Excel:
a nějak polopaticky prosím... jak ten vzorec aplikovat?
Cože?
Co s tím chceš radit?
Jednoduše: když máš ten text v buňce A1 (a dalších ve sloupci A), vložíš tento vzorec do buňky B1 a zkopíruješ do dalších buněk ve sloupci B.
Pokud máš ten text někde jinde, musíš vzorec upravit a místo A1 tam dát adresu buňky, kde ten text máš.
To zkouším, ale nefunguje to pro ty buňky, ve který je hned za počátečním slova čárka viz slopce 3, 4, 6 ze seznamu výše
Tak děláš něco blbě, mě to samozřejmě funguje s mezerou i čárkou, zkoušel jsem to přesně na těch datech, co jsi sem dal. Dobré by bylo napsat, jak to nefunguje (blbý výsledek, chyba, ...), případě sem přímo ten soubor nahrát (předtím se ale musíš zde zaregistrovat).
nefunguje to tak, že u těch dotyčných buněk to zkopíruje text z první buňky (B1)
.. snad nekopíruješ ten vzoreček ručně do každého řádku ... jinak by ti ty odkazy (pokud to ve vzorci není výslovně uvedeno) se samy předělaly na příslušné řádky.. takže místo B1 by bylo C1, D1 atd..
Ne, přetahuju to normálně šipkou v rohu buňky
Salve Hospes — „Vítej, hoste!“---------- Salve
salvo iure — bez porušení práva ---------- salvo
sanctimonia, ae f. — svatost, bezúhonnost ---------- Salve
sanctimonialis, is f. — jeptiška ---------- Salve
sanctum et gloriosum opus — svaté a slavné dílo ---------- sanctum
sapientia, ae f. — moudrost ---------- Salve
sartor lignorum — struhař, prknář ---------- sartor
Takhle to vypadá. Někde je to v pořádku, někde ne (tam, kde je čárka za poćátečním slovem).
Omlouvám se, při skládání toho "megavzorce" mi zam zůstalo v jednom místě "B1". Správné znění:
Ale pokud bys hned napsal, že Ti Excel při kopírování vyhodil upozornění na cyklický odkaz, měl bych to samozřejmě opravený rychleji.
výborně, už to funguje jak má
ještě jedna věc - jak to zrychleně přetáhnu až na konec?
2x poklepej na ten úchyt v pravým dolním rohu, pomocí něhož ten vzorec roztahuješ do dalších buněk. Vyplní se všechny buňky v daném sloupci, až po první volnou buňku v levém sousedícím sloupci.
Já to dělám pomocí klávesnice takto (za předpokladu, že sloupec A obsahuje ty texty a v buňce B1 mám ten vzorec, který chci dostat do dalších buněk ve sloupci b):
1. postavím se na buňku B1 se vzorcem a stisknu CTRL+C.
2. stisknu <šipku vlevo> (dostanu se na buňku A1)
3. stisknu CTRL+<šipka dolů> (dostanu se na poslední obsazený řádek ve sloupci A)
4. stisknu <šipku vpravo> (dostanu se na poslední buňku ve sloupci B, do níž potřebuji dostat vzorec)
5. stisknu CTRL+SHIFT+<šipka nahoru> (označí se mi celá oblast sloupce B, kam chci ten vzorec zkopírovat)
6. stisknu CTRL+V (označená oblast se vyplní tím vzorcem).
Ty asi o Excelu nevíš vůbec nic, že? Tak doporučuji tenhle web.