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

#1 7. 5. 2020 12:35:11

kamilos0123
Člen
Registrace: 14. 1. 2016
Příspěvků: 32

Automatické "najít a nahradit" - VYŘEŠENO

Zdravím,
potřeboval bych pomoct s jedním vzorcem, který by mi hledal nejlepší shodu mezi sloupcem A a sloupcem E a nahradil danou shodu hodnotou ze sloupce B.
tzn. například ve buňce F1 budu mít "šedý svetr"

soubor - https://drive.google.com/open?id=1Hl8IN … 4g8vK8Oatt

Děkuji za pomoc!

Editoval kamilos0123 (11. 5. 2020 08:47:22)


LibreOffice

Offline

#2 7. 5. 2020 13:01:20

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

Re: Automatické "najít a nahradit" - VYŘEŠENO

kamilos0123 napsal(a)

Zdravím,
potřeboval bych pomoct s jedním vzorcem, který by mi hledal nejlepší shodu mezi sloupcem A a sloupcem E a nahradil danou shodu hodnotou ze sloupce B.
tzn. například ve buňce F1 budu mít "šedý svetr"

soubor - https://drive.google.com/open?id=1Hl8IN … 4g8vK8Oatt

Děkuji za pomoc!

Vzorec je jednoduchý, ale musí být v pomocném sloupci. Pokud se nepletu, tak výsledek bude ve sloupci F :

=IF(A1<>E1;B1;A1)

     Také to může být dopředu nastaveno tak aby při prázdné buňce A1 byla výstupní buňka prázdná :

=IF(A1="";"";IF(A1<>E1;B1;A1))

nebo výraz pomocí IFS :

=IFS(A1="";"";A1<>E1;B1;1+1=2;A1)

Editoval neutr (7. 5. 2020 13:02:47)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 7. 5. 2020 13:09:45

kamilos0123
Člen
Registrace: 14. 1. 2016
Příspěvků: 32

Re: Automatické "najít a nahradit" - VYŘEŠENO

Díky za odpověď neutr, jsem ale asi mongol, mohu poprosit o doplnění vzorce do souboru a někam ho nahodit?
Moc díky!

Edit: v popisu chyba, F2 = šedý svetr, ale pochopil jste to dobře, sloupec F=výsledek

Editoval kamilos0123 (7. 5. 2020 13:10:36)


LibreOffice

Offline

#4 7. 5. 2020 13:44:58

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

Re: Automatické "najít a nahradit" - VYŘEŠENO

translate.
    Vyberte si jednu z možností a tu kopírujte třeba do řádku 10000. Když přidáte "novinky" do sloupce "B" tak jednoduše vyberte ve sloupci F od F1 Ctrl+šipka dolů, Ctrl+C, Vložit do A1 jenom jako text a je hotovo. příště zase přidáte jenom do sloupce "B" a postup zopakujete.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 7. 5. 2020 13:51:49

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

Re: Automatické "najít a nahradit" - VYŘEŠENO

Ps já jsem tu chybu narval do vzoru. Vezměte vzorce z řádku 3 - vystříhněte a vložte do řádku 2. Tyto potom nakopírujte dolů.

Omluva :-)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#6 7. 5. 2020 14:46:25

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 187

Re: Automatické "najít a nahradit" - VYŘEŠENO

Já myslím že výsledek má být poněkud náročnější https://uloz.to/file/eyrUmrbpxtc3/priklad-png


Jenže to vzorci nejspíš nepůjde, neb VLOOKUP neumožní vrátit texty pro více vstupních hodnot, takže by se musel nějak zadat VLOOKUP ve smyčce, např. VLOOKUP pro grey, pak VLOOKUP pro jumper -> a aby tyto VLOOKUPY umístil do jedné buňky.


Nejspíš tedy jedině makrem. Jenže je nejasné parsování těch hodnot ze sloupce E, kdybych vstupní hodnoty (grey jumper) parsoval podle mezery mezi slovy, tak by ve sloupci A muselo být vždy jen jedno slovo bez mezery.
Jak mám poznat jak rozdělit třeba white and black jacket abych mohl nalézt shody ve sloupci A? Když budu odkázán jen na rozdělení podle mezer tak budu namydlený.
Ještě horší je to pro orange with white stripes, tam už nejsou asni shody s údaji ze sloupce A.


Dělat nějaké všechny vyhledávávací kombinace abych dostal všechny varianty a těmi se pak nějak probíjet - to není na LibreOffice ale možná tak na Prolog.

Offline

#7 7. 5. 2020 15:05:30

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

Re: Automatické "najít a nahradit" - VYŘEŠENO

Já si to nemyslím.
     Jednak by to znamenalo inkrementální prohledávání, což nebylo zadáno, ale zejména je zřetelné, že autor použil simulovaná data. Když se podíváme do sešitu, tak jde skutečně o překlady a nejspíš jde o aktualizace podle datumu.
     To znamená, že se vyhledá například výraz XY 25.11.2019 a má se nahradit výrazem XY 7.5.2020. nejde ani o sloupce A, B, H které by byly různě setříděny. To by také muselo být v popisu, respektive by musel padnout požadavek na relaci. Například A1:B1:Fx a podobně. Při tom zadání jaké autor uvádí příkladem a dotazem to nemůže být nic jiného nežli relace A1:B1:H1.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#8 7. 5. 2020 15:59:34

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

Re: Automatické "najít a nahradit" - VYŘEŠENO

Je ale možné, že autor nevyjádřil zcela výstižně jak to potřebuje udělat. Abych pomohl upřesnit v případě že se mýlím uvádím co se musí zadat :


1) - Sloupec A má řekněme stávající platnost.
2) - Sloupec B má dříve navrženou změnu. Proto platí relace A1:B1 až Ax:Bx.
3) - Sloupec H má poslední verzi, nebo verzi schválenou (nemusí to být ta nejnovější).
     Potom by platila relace A1:B1:H1 tak jak je to nyní. Ale verze nemusí akceptovat některou relaci. Potom by bylo nutné upřesnit kterou a proč. Je možné, že je potřeba například nejprve seřadit sloupec H podle A, respektive H podle B.


     Také je možné že jak sloupec B, tak sloupec H má jiné řazení včetně různých položek. Sloupce mohou být získány různými reporty a teprve v sešitě se dají správně přiřadit. Zde by bylo velkou chybou požadovat vzorci správné přiřazení (A1:Ax):(B1:By):(H1:Hx). Musel by se znát rozhodující ukazatel. Navíc by musel být určen explicitní výraz pro každý řádek ze sloupce A který se hledá v ostatních sloupcích.


     Inkrementální hledání "nejlepší shody" je sice problém, ale nemusí to být Prolog ani jiný jazyk. Calc to bezpečně dá ale stejně je potřeba počítat s více možnostmi shody. Takže ta nejhorší verze by byla velice neurčitá ve výsledku
A1:B4:(H16,H25,H68)
A1:B12:(H68,H152,H305,H315,H505)
A1:B85:(H25,H152,H305,H455)
A1:B63:(H17,H23,H68,H151,H308,H355)
A1:....................
........................


     Takto složité zadání by mělo asi jen procentní shody. Potom by bylo asi výhodnější počítat shodu v Charech(A1=%B1...%By) a opačně (B1=%A1...%Ax). Také by se muselo elementárně řešit (A1:Ax):(B1:By), udělat očima rozhodnutí a pak pokračovat (A1:Ax):(H1:Hz) a nakonec možná i (B1:By):(H1:Hz).


     Se zadáváním bývá problém a já často hledám "zádrhele", ale zde mi vyšlo, že nemůže jít o velkou složitost, protože tu by autor popsal lépe.

Editoval neutr (7. 5. 2020 16:16:16)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#9 7. 5. 2020 17:11:22

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 187

Re: Automatické "najít a nahradit" - VYŘEŠENO

neutr: Mně taky napadlo jak by tam šly nahrazovat nějaký neurčitosti - pokud by se to tedy mělo chovat jak jsem myslel, ale bylo by to jako algoritmus dost pomalý.
Sloupec A by musel být seřazen od víceslovných po jednoslovná a pak procházet anglický řetězec a testovat všechny výskyty údajů ze sloupce A a v případě nalezení nahradit. Akorát to nahrazení by se muselo doplnit nějakým speciálním znakem (třeba @, ten by se ve finále dal odstranit) aby to v dalším prohledávání nenahrazovalo již něco nahrazeného.

Offline

#10 8. 5. 2020 07:36:02

kamilos0123
Člen
Registrace: 14. 1. 2016
Příspěvků: 32

Re: Automatické "najít a nahradit" - VYŘEŠENO

1. omlouvám se, nezkontroloval jsem si to pořádně po sobě /facepalm
oprava= orange with stripes
https://i.imgur.com/8ZIKjHt.png - toto by měl být výsledek který potřebuji
2. neutr bohužel ani po stažení vašeho souboru mi to podle vzorce nefunguje

Editoval kamilos0123 (8. 5. 2020 07:40:40)


LibreOffice

Offline

#11 8. 5. 2020 12:24:15

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

Re: Automatické "najít a nahradit" - VYŘEŠENO

Ani tak to není jasné. Zřejmé jen to, že jsem se mýlil a nebudu komentovat v čem nebo proč. Upřesnění dotazů a vysvětlení proč je zde translate_2
     Podívejte se dobře co je potřeba velmi dobře upřesnit. Už je zřejmé že to nejspíš není na vzorce, ale na makra. Takže se také vyjádřete k tomuto řešení. Vzorci je to schůdné jen pokud jsou ve sloupci H shodné úplné výrazy ve sloupci A.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#12 8. 5. 2020 12:51:19

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 187

Re: Automatické "najít a nahradit" - VYŘEŠENO

Já bych na to mohl snad po víkendu zkusit makro na ten algoritmus co mě napadl. Ovšem je otázkou kolik položek tím chcete překládat, jestli ve sloupci A budete mít několik tisíc (či desítek tisíc) slov nebo slovních spojení, tak to bude nejspíš hodně pomalý.


Problém se synonymy by to zatím neřešilo a prostě by se tam dalo první nalezené slovo. Nevím přesně jak bych to nyní s těmi synonymy algoritmoval - jestli by bylo lepší si je alespoň nějak označit nebo třeba filtrovat sloupce na duplicitní slova.


Bylo by však záhodno mít údaje ve sloupci A setříděné podle počtu slov ve slovních spojeních - např. podle počtu mezer, neboť nejprve by to nahrazovalo celá slovní spojení a poté až jednotlivá slova. Sice to mohu v rámci makra setřidit i sám, ale opět to možná může být na nějaký úkor rychlosti.


Jestli tam potřebujete mít i více interpunkcí než jen mezery, tak by se to též mohlo komplikovat.

Offline

#13 8. 5. 2020 13:10:07

kamilos0123
Člen
Registrace: 14. 1. 2016
Příspěvků: 32

Re: Automatické "najít a nahradit" - VYŘEŠENO

Potřebuji to k překladu tisíce řádků.
Jde o to že content bude např. i výcuc v html a v tom budou texty a já je potřebuji přeložit.
Ony ty věty se budou opakovat, tzn. když je sepíšu jednou, tak se vždy nahradí.
Já měl za to, že existuje nějaký vzorec jako je funkce Najít a nahradit, protože přes to jsem to dělal doposud, samozřejmě s dalšími úpravy posléze.
To je totiž to co potřebuji:
Najdi shodu -> nahraď překladem.
- pokud tam bude black a brown a oba přeložím jako černá (je jedno proč) tak to přepíše všechny black a brown na "černá".
- v jedné buňce samozřejme bude více než 1 shoda jak jsem uvedl "orange" a "with stripes".
- pokud tam dám překlad "I am" a v contentu bude "Im" tak počítám s tím že se mi to nepřeloží, jednoduše po zjištění hodím další překlad a to "Im" a následně se mi to přeloží.
- vnímám problém když budu chtí přeložít "černá bunda" a v překladu budu mít přeloženo "black=černý" a "black jacket=černá bunda", proto bych jako první napsal dal do sloupce A "Black Jacket" a poté "Black" , tím pádem mi to prvně přeloží "Black jacket" a "black" už ne.

Editoval kamilos0123 (8. 5. 2020 13:14:12)


LibreOffice

Offline

#14 8. 5. 2020 15:14:47

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 187

Re: Automatické "najít a nahradit" - VYŘEŠENO

Ten postup s Najít a nahradit mě napadl když jsem odeslal ten předchozí příspěvek, asi je to nejjednodušší. Akorát se všechna ta nahrazení musí pustit ve smyčce -> aby prostě vyhledal a nahradil všechny údaje ze sloupce A.
No a samozřejmě to musí být utříděné tak, aby první vyhledával víceslovné výrazy (black jacket) a teprve potom jednoslova (black, jacket).

Ale dříve jak v pondělí se k tomu jistě nedostanu, začínají mě zase pobolívat záda a přes víkend rád odpočinu.

Offline

#15 8. 5. 2020 15:43:30

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

Re: Automatické "najít a nahradit" - VYŘEŠENO

kamilos0123 napsal(a)

Najdi shodu -> nahraď překladem.
- pokud tam bude black a brown a oba přeložím jako černá (je jedno proč) tak to přepíše všechny black a brown na "černá". .. = další podmínka je výraz z první pozice má přednost? Ale co když to nebude barva?


- v jedné buňce samozřejme bude více než 1 shoda jak jsem uvedl "orange" a "with stripes". ..= když nepůjde o stejné typy výrazů, tak platí oba?


- pokud tam dám překlad "I am" a v contentu bude "Im" tak počítám s tím že se mi to nepřeloží, jednoduše po zjištění hodím další překlad a to "Im" a následně se mi to přeloží. ... = takže mají existovat výjimky z překladu které uděláte manuálně, nebo jiným nástrojem? Přesně z tohoto důvodu jsem požadoval množinu používaných výrazů.


- vnímám problém když budu chtí přeložít "černá bunda" a v překladu budu mít přeloženo "black=černý" a "black jacket=černá bunda", proto bych jako první napsal dal do sloupce A "Black Jacket" a poté "Black" , tím pádem mi to prvně přeloží "Black jacket" a "black" už ne. .. = Tohle už vypadá jako offline překladač obecně AJ>CZ. Dá se to udělat pro jednotlivá slova ale potom je potřeba klasický slovník. Je jich několik free. To jste mohl říct hned, ale také jde o relaci úzce omezenou na stejný řádek.

     Takové zadání je už něco úplně jiného. V takovém případě bych viděl párování A1:B1 jako ověřený překlad. Naproti tomu v H1 nový výraz který bude ověřen na existujicí překlad (například výběr z pole [A2:A50000]). Pokud bude shoda 100% - bude zápis v F1, nebo se výraz hned smaže, popřípadě vrátí index(číslo řádku) podle potřeby.
     Pokud bude pouze menší shoda (i vícenásobná) tak se uvedou indexy ze kterých se vybere nejvhodnější (připíše se %-ni shoda) a ostatní se uvedou do komentáře (červený čtvereček vpravo nahoře).


     Takováhle práce je ale více typická pro Writer který může pracovat téměř stejně rychle jako se zabudovanými automatickými opravami, respektive náhradami (ty jsou ale programovány v Java,  Python, nebo v C-čku). Myslím že existují již hotová udělátka jako rozšíření, stačí jen vyměnit databáze).
     V každém případě by šlo otestovat zda by byl Calc stejně rychlý - má výkonné vyhledávací rutiny. Ale i případný přesun práce na Writer a zpět do Calcu není problém. Pro češtinu přímo asi rozšíření nebude a tak by tato potřeba zasloužila své rozšíření. Už jsem něco podobného studoval. Je to schůdné ale nic snadného na půl odpoledne to zase není.
     Řešení se najde asi více a nakonec by z toho mohla vzniknout i databáze vhodná pro vzorce v Calcu. Objem specializovaných výrazů bude vždy menší nežli obecný slovník. Tedy nic neslibuji a můžu ucělat návrh ale ladit ho nebudu - to mi ničí život :-(


PS:
    Ještě jsem měl uvést, že existují rozšíření která umí otevřít Google (nebo jiný) překladač. To by neměl být problém, ale třeba Google přechází nyní na osobní účty překladů když dříve to bylo anonymní - člověk se mohl dobrovolně zapojit do projektu překladů. Ale i to má řešení. Stačí vybrat dosud neexistující překlady, zadat je jako Txt nebo Word a vložit naráz k překladu. Zpět se to vrátí také tak, nebo ve zvoleném formátu. S toho se dá načítat přímo do Calcu. Takto se databáze rozroste a potřebných výrazů nebude tolik, ačkoliv čím větší fráze tím komplikovanější překlad bude a databáze může růst geometrickou řadou.


Měl byste potvrdit, že takto nějak by to mohlo fungovat aby se dalo něco kloudně řešit.

Editoval neutr (8. 5. 2020 15:57:00)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#16 11. 5. 2020 07:50:17

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 187

Re: Automatické "najít a nahradit" - VYŘEŠENO

Něco jsem stihl již včera večer, něco dnes ráno, je to tady https://uloz.to/file/OD05oyRwxADC/prekladac-kl1-ods


Z menu OVLÁDÁNÍ nejprve spusťte vytvorSlovnik, to si vyfiltruje a setřídí data ze sloupce A do slovníkového listu, pak udělá překlad všech položek ve sloupci E.

Kdyby bylo potřeba přidat jen nějaké překlady aniž by bylo potřeba aktualizovat fráze ve slovníku, stačí označit výběr ve sloupci E a dát makro pridejPreklad


Ve stavovém řádku by se měl ukazovat i nějaký ukazatel průběhu, ale zkoušel jsem to jen na těch pár frázích, takže se ani neukazoval.


Podrobnější popis je v listu NÁPOVĚDA.

Offline

#17 11. 5. 2020 08:47:09

kamilos0123
Člen
Registrace: 14. 1. 2016
Příspěvků: 32

Re: Automatické "najít a nahradit" - VYŘEŠENO

Vynikající @kamian, děkuji oběma.


LibreOffice

Offline

#18 11. 5. 2020 08:56:47

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 187

Re: Automatické "najít a nahradit" - VYŘEŠENO

Jen drobný dotaz na tu rychlost. Jak rychle vám to funguje s těmi více tisíci údaji? Je to dost rychlé nebo alespoň přijatelné :-)?

Offline

#19 11. 5. 2020 08:58:23

kamilos0123
Člen
Registrace: 14. 1. 2016
Příspěvků: 32

Re: Automatické "najít a nahradit" - VYŘEŠENO

Hned jakmile se dostanu k další várce, vyzkouším a dám vědět. smile (zkoušel jsem zatím jen funkčnost a přidání pár dalších překladů.


LibreOffice

Offline

#20 12. 5. 2020 09:39:54

Netwalker
Člen
Registrace: 20. 10. 2015
Příspěvků: 45

Re: Automatické "najít a nahradit" - VYŘEŠENO

Jen skromný příspěveček: pokud se jedná o překlad, nebylo by vhodnější použít něco, co je určeno jako pomůcka k překladům? Třeba OmegaT (https://omegat.org/)? Má překladovou paměť - tedy to, co tazatel teď dělá v calcu. Umí pracovat se soubory wordu i Open/Libre-office. Je potřeba se s tím naučit pracovat, ale pak je asi velmmi dobrý pomocník.

Editoval Netwalker (12. 5. 2020 11:30:04)

Offline

Zápatí