Podmíněné sloučení textu

Ahoj, existuje funkce, která mi spojí do jedné buňky obsah všech buněk z jednoho sloupce, pokud je v jiném sloupci konkrétní hodnota? Něco jako sumif, ale místo počítání mi vypíše obsah buněk.

Spojení textu jde např pomocí funkce TEXTJOIN Dokumentace/Výpočetní funkce/TEXTJOIN - The Document Foundation Wiki

ukázka
calc_textjoin.ods (8.5 kB)

Ano, textjoin znám, ale nevím už jak udělat tu podmínku. Potřebuji udělat to, aby funkce prohledala například sloupec G v určené oblasti, našla výskyt konkrétního textu (jedinečné ID), který se vyskytuje na více řádcích a vypsala hodnoty buněk ze sloupce A. Takže pokud najde stejně ID v buňkách třeba G2, G8, G30…, aby vypsala a spojila do jedné buňky hodnoty z buněk A2, A8, A30…

já bych to udělal takto:
calc_textjoin2.ods (10.2 kB)

vytvořím si pomocný sloupec, kde zrealizuji tu podmínku. Využiji druhého parametru fce TEXTJOIN “Přeskočit prázdné buňky”. Snad jsem to pochopil správně co potřebuješ.

Toho co hledám je víc a vygenerováno funkcí unique. Třeba i 150 položek a hledá se to v tabulce o až 1000 řádcích, tak jsem se chtěl tomuto vyhnout. Hlavně ty data se mění, tak si to úplně neumím představit. Ale asi to jinak nejde. A možná ani to co jsem myslel by nefungovalo tak jak jsem si představoval.

Ta podmínka je tam jednoduchá viz. Textjoin not working properly - #8 by Lupp nebo worksheet function - How to return in a cell all the matching values present in a column? - Super User

Akorát se to musí vložit přes maticový vzorec.
Takže si napíšete vzorec do buňky a namísto Enter zmáčknete Ctrl+Shift+Enter


textjoin.ods (12.4 kB)

2 Likes

Vyzkouším, ale první pokus se nepovedl a myslím, že už jsem to právě zkoušel i dřív. Ta podmínka se vyhodnotí vždy jako chyba.

V takto jednoduchém příkladě se mi to povedlo, ale když to aplikuji n potřebné místo, kde se různá data generují z jiných listů, tak se to ne a ne podařit. Ale návod už mám, tak snad se mi to povede aplikovat. Díky za vzorec

Tak už se to povedlo. Chyba byla v podmínce, kdy jsem porovnával sice na první pohled stejné data, ale až když jsem je prohnal trim funkcí, tak to začalo fungovat. Přitom LEN() obou byl stejný. Úplně tomu nerozumím, ale hlavně že už to jde.

Můžete uploadovat ukázku? Tohle by mě docela zajímalo. V jedné buňce bez toho TRIM, ve druhé to funkční.

Ukázkou se myslí funkční soubor? Ona je možná chyba cestou k těm porovnávaným údajům. Jsou to data generovaná z jiných generovaných dat. A jelikož nejsem v tomto oboru zdatný, může těch chyb být cestou spousta. Nicméně to takto funguje jako celek, tak do toho nebudu zasahovat. Věřím, že by to šlo daleko snadněji celé naprogramovat, ale udělal jsem co jsem zvládl s mými znalostmi. Excel jsem měl naposled na učňáku a tam mi to dalo akorát základy.

Dne út 26. 3. 2024 10:07 uživatel Kamil Landa via Ask LibreOffice <noreply@ask.libreoffice.org> napsal:

Ukázka znamená funkční soubor, ale zkrácený s daty třeba jen na pěti řádcích. Ale když to skládáte z více zdrojů tak to nemá smysl uploadovat neb já bych tu možnost poskládat to z těch dat neměl. Nechme to tedy být, dobrý že to již funguje.

Mohu poslat celý soubor, není tam nic tajného, pokud Vás to zajímá. Jsou tam i vstupní data. Popravdě mě to taky zajímá, proč to bez trim nejde a s ním ano, když by to mělo být obojí stejné

Dne út 26. 3. 2024 10:51 uživatel Kamil Landa via Ask LibreOffice <noreply@ask.libreoffice.org> napsal:

Jasně, tak ho uploadněte sem, zkusím vyzkoumat proč to dělá.


Jen malá prosba, upravte prosím ty vaše komentáře výše a smažte z toho tu patičku Dne út… vzniklou zřejmě z CtrlCV z emailového upozornění :slight_smile:

Odpovídal jsem z emailu. Jsem tu nový a zatím se učím jak to funguje. Díky za upozornění. V příloze je ten soubor. Sloupec C na listu ‘TISK pro nás’ je ten vzorec. C2 je bez trim a zbytek s trim. N/O/P14 jsou kontrolní délky buněk, které jsou k tomu použity, kdy jsou všechny stejné. “Program” vznikal postupně, od původního záměru narostl o spoustu věcí, takže tam je asi i dost zbytečných kroků, nebo krkolomných řešení. Ale jak jsem psal, pracuji s tím co umím a programování není můj obor, na učňáku naposled. Od té doby se živím rukama a až poslední půlrok jsem byl posazen do kanclu. Tak se snažím si práci usnadnit.
Příklad.ods (504.9 KB)

Tak tady jsem na konci svých znalostí. Já tam vidím samé #NAME?.

Data ve sloupci C jsou však na základě sloupce D který ale má vstup z com.go…, což popravdě ani nevím co znamená, tipuji databáze? Pak je možný, že to již z té databáze leze nějak “obmezerované” → a TRIM to pak zvládá.

Tam je vlastně funkce Unique, která standardně nefunguje. Mám ji tam doplněnou přes rozšíření. To mi nedošlo.