Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti

calc.png Další díl volné série u funkcích v Calcu pokračuje textovými funkcemi pro záměnu a nahrazování, převody na čísla a z čísel podobnými možnostmi.  

Předchozí díly volného seriálu:

Jestliže potřebujete v buňce nahradit část textu jiným, máte k dispozici dvě funkce - REPLACE a SUBSTITUTE. REPLACE využijete, pokud znáte pozici a počet znaků, které chcete nahradit novým textem, nebo chcete na určitou pozici vložit nový text; např. výsledkem REPLACE("vlož slovo";5;1;" nové ") bude „vlož nové slovo". Nelze nahradit nulový počet znaků, proto je nutné nahradit mezeru a doplnit ji do vkládaného textu.

Nahrazení textu na známé poziciNahrazení textu na známé pozici

V případě, že nejdříve potřebujete v buňce najít text, který poté chcete nahradit novým, použijte funkci SUBSTITUTE, která zadaný text najde a zároveň ho nahradí novým. Nahradit lze buďto všechny výskyty hledaného textu, nebo jen jeden určitý, vizte následující příklad.

Vyhledání a nahrazení zadaného řetězce novýmVyhledání a nahrazení zadaného řetězce novým

Řádek 6 v našem příkladu je ukázkou, jak lze s trochou logiky a skládáním funkcí získat „nové" funkce, které v Calcu nejsou (a ani v MS Excelu):

 =(LEN(A6)-LEN(SUBSTITUTE(A6;"máj";"")))/LEN("máj")

Zde je to vzorec, který v dané buňce určí počet výskytů zadaného řetězce. Finta je v tom, že se nejprve z původního textu odstraní všechny výskyty zadaného řetězce, délka výsledku se porovná s délkou původního textu a výsledný rozdíl se vydělí délkou hledaného (odstraněného) řetězce, čímž dostanete počet jeho odstranění=výskytů.

Při SUBSTITUTE("xx";"x";"xx") bude výsledkem „xxxx", tzn. že SUBSTITUTE nejprve vyhledá všechny výskyty a teprve potom je najednou všechny nahradí. Pokud by totiž toto prováděl iteračně, tj. našel první výskyt, nahradil ho, pak našel další výskyt, nahradil ho, atd., atd., tak v uvedeném případě by práci nikdy nedokončil a nahrazoval by teoreticky do nekonečna.

Jestliže potřebujete porovnat shodu dvou řetězců, máte na výběr z funkcí = (ano, pouze rovnítko) a EXACT. Obě rozlišují velikost písmen a obě dokáží porovnávat text i čísla i výsledky vzorců. Pokud buňka A1 obsahuje text „Aa" a buňka A2 text „aA", tak výsledek =EXACT(A1;A2) i =A1=A2 bude v obou případech NEPRAVDA/FALSE, protože se řetězce liší ve velikosti písmen. Pokud potřebujete porovnat shodu řetězců bez ohledu na velikost písmen, musíte si pomoci jejich konverzí na velká nebo malá písmena, tj. =EXACT(LOWER(A1);LOWER(A2)), resp. =EXACT(UPPER(A1);UPPER(A2)). Pak již dostanete jako výsledek PRAVDA/TRUE.

Pro generování opakujícího se textu lze využít funkci REPT, která jako vstup bere řetězec k opakování a počet těchto opakování ve výsledku, např. REPT("X";99) zobrazí v buňce text o 99 znacích X.

Speciálními funkcemi pro práci se znaky jsou CHAR a CODE, které se můžou hodit spíše programátorům - první jmenovaná převede zadané číslo na znak podle aktuální tabulky znaků, např. CHAR(65) vrátí znak „A"; přípustné jsou hodnoty 1-255. CODE se chová opačně, tj. ze zadaného znaku (resp. prvního znaku zadaného řetězce) vrátí jeho kód, např. CODE("BCD") vrátí hodnotu 66.

Pokud chcete v některé buňce zobrazit vzorec z jiné buňky, jako vidíte v příkladech, použijte funkci FORMULA s odkazem na buňku se vzorcem. Pro zobrazení vzorců ve všech buňkách, namísto jejich výsledků, použijte z menu Nástroje | Volby | OpenOffice.org Calc | Zobrazit | Zobrazení | Vzorce.

K převodům mezi textem a čísly existuje celá řada funkcí. Mnohé z nich je přímo potřeba použít např. při získávání čísel z textů. Jestliže máte např. sadu nějakých kódů, ze kterých potřebujete získat čísla a s nimi dále pracovat, budete potřebovat funkci VALUE, která převádí text na číslo, jak je vidět na dalším příkladu.

Převod textu na čísloPřevod textu na číslo

Ačkoliv se hodnota ve sloupci B může jevit jako číslo, je to text, protože je výsledkem funkce MID. Proto je také výsledek ve sloupci C špatný, protože se sčítá text a číslo. Až vzorec ve sloupci D je správný, protože před sečtením je výsledek funkce MID převeden na číslo pomocí funkce VALUE. Toto opomenutí bývá častým zdrojem chyb a špatných výsledků.

O něco složitější funkcí k převodu textu na číslo v desítkové soustavě je DECIMAL, která zvládá i různé číselné soustavy na vstupu. Kromě běžné desítkové se nejčastěji používá šestnáctková (hexadecimální) a dvojková (binární). V DECIMAL můžete zadat soustavy 2-36. Výsledkem DECIMAL("a1b1c1";16) bude 10 596 801, DECIMAL("10101";2) dá 21. Funkce VALUE("123") se pak dá zapsat jako DECIMAL("123";10), výsledek je stejný.

Pokud potřebujete převádět čísla mezi jednotlivými soustavami, podívejte se na funkce HEX2BIN, HEX2DEC, DEC2BIN, DEC2HEX a podobné.

Opačnou funkcí k DECIMAL je BASE, pomocí které získáte z celého kladného desítkového čísla jeho textový ekvivalent v zadané číselné soustavě o zadaném počtu znaků. Lze takto formátovat i desítková čísla, např. BASE(666;10;5) vrátí text „00666", BASE(666;16;5) pak „0029A". Opět mějte na paměti, že výsledkem je text a pro další počítání s ním je potřeba zase použít VALUE.

Pokud potřebujete formátovat desetinné číslo či oddělovat řády tisíců, použijte funkci FIXED. Výsledkem je opět text, např. FIXED("1024,56";4;0) vrátí „1 024,5600". Třetí parametr ve funkci určuje, zda se budou oddělovat tisíce (0 - výchozí hodnota) nebo ne (1). Použije se oddělovač tisíců nastavený ve vašem pracovním prostředí.

Ještě větší volnost při formátování čísel na text vám poskytne funkce TEXT, které lze přímo zadat formát výstupu. Výsledkem TEXT(1024,56;"000 ###,000") bude „001 024,560". Znak 0 se ve formátu používá pro povinný počet míst, # pro volitelný počet míst, % pro převod na procenta. TEXT kromě samotného formátování provádí i zaokrouhlování či násobení 100 při převodu na procenta, jak je vidět v následujících příkladech.

Formátování čísel na textFormátování čísel na text

Calc disponuje ještě funkcemi pro převod z a na římské číslice, např. ROMAN(1989) vrátí text „MCMLXXXIX", ARABIC("MCM") pak 1900. Funkce zvládají hodnoty v rozsahu 0 až 3999.

Uvedené příklady si můžete stáhnout: Textové funkce 2 - příklady, stejně jako přehlednou tabulku funkcí: Textové funkce 2 - přehledová tabulka.

(Jako ve škole) Průměr: 1.06 | Hodnotilo: 16
 

Komentáře

user avatar MartinezZ
Odpovědět
Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
4. 05. 2009, 09:04:43
Zajímavé. Mám takový hloupoučký začítečnický problém - jak pracovat s údaji v hodinách? Jak sečíst buňky, ve kterých jsou údaje ve tvaru "07:30" - formát buněk čas. Ty sečtu (SUM) a vyjede mi správný výsledek ve tvaru "00:00:00".

1) Nevím, jak zobrazit ve výsledku jen "00:00". Když nastavím formát buněk na cokoliv jiného než "Číslo - Standard", výsledek se deformuje.

2) Netuším, jak skloubit tyto "časové jednotky" s běžným násobením - tzn. výsledek ve tvaru "00:00" krát 320, aby byl výsledek v Kč.

Díky za tipy.
user avatar hanus
Odpovědět
Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
4. 05. 2009, 11:54:32
Projděte si Fórum k Calcu, konkrétně pak např. témata
http://forum.openoffice.cz/viewtopic.php?id=281
http://forum.openoffice.cz/viewtopic.php?id=370
http://forum.openoffice.cz/viewtopic.php?id=366
http://forum.openoffice.cz/viewtopic.php?id=273 http://forum.openoffice.cz/viewtopic.php?id=381
user avatar MartinezZ
Odpovědět
Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
4. 05. 2009, 12:15:49
Děkuji!
user avatar hanus
Odpovědět
Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
4. 05. 2009, 22:00:33
Řešení je tedy ve Fóru, téma
http://forum.openoffice.cz/viewtopic.php?id=442
user avatar Lubo
Odpovědět
Funkce pro práci s textem
9. 02. 2017, 13:40:10
V calcu se mi nedaří převod čísla na text. V jedné buňce mám: 100 Kč, a v druhé buňce bych potřeboval: JednostoKč. Jak na to, prosím? Lubo
user avatar neutr
Odpovědět
Re:Funkce pro práci s textem
9. 02. 2017, 19:33:05
Tento problém je jiného typu a byl již dříve řešen v diskusi - fórum. Pokuste se to najít, nebo vytvořte nové vlákno.

To co uvádí článek zde je formát čísla. Nahrazují se například formáty času, měny a podobné věci. Vy hledáte náhradu čísel za text. Navíc potřebujete aby formát akceptoval tuto náhradu. To by se dalo naformátovat ale pro každé číslo extra.

Řešením je spíš automatická náhrada, nebo oprava, ale to by fungovalo i když to nepotřebujete.

Prakticky jedinou schůdnou cestou je řešení makrem které bude umět nahradit číslo za textový tvar a ještě přidat měnu. Ale může to být uděláno v podobě vzorce.

Teoreticky lze udělat také makro na buňku a stisknout klávesovou zkratku - číslo (s formátem i bez formátu) se přepíše na předem definovaný text. Lze si představit, že budete chtít zapisovat statisícové částky - př: 128355Kč. I když jde asi o výpis složenek a místo by se našlo i za cenu zalomení, nebo zmenšení textu.

Dejte ale dotaz do fóra. Tento článek už je hodně starý a nevím jestli autor ještě náš portál navštěvuje. Do starých témat (návody, recenze ap) chodí naprosté minimum uživatelů.
user avatar Bambusha
Odpovědět
Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
30. 04. 2018, 13:37:08
Dobrý den,
je nějak možné, abych v jedné buňce mohl psát např.: 1+2+3 a v sousední aby mi to vyhodilo výsledek 6?
Děkuji
user avatar neutr
Odpovědět
Re:Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
1. 05. 2018, 08:40:24
Ano lze to udělat, ale dotaz dejte do fóra. Postup je v tom, že se textovými funkcemi vyseparují čísla jako Value která se sečtou.

Ale pokud potřebujete zobrazit operaci tak pomocí funkce FORMULA. Například uvedete v A1 =1+2+3 > ale vidíte výsledek 6. Takže do B2 dáte =Formula(A1) a tam vidíte vzorec. Lze také navolit funkci která to zobrazuje hned jako formula ale počítá s výsledkem.
user avatar kabi
Odpovědět
Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
2. 05. 2018, 10:28:54
Pokud chcete řešit složitější vzorce, tak ne. Calc nemá implemetovanou funkci evaluate.
user avatar Michal
Odpovědět
Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
19. 03. 2021, 08:24:12
Dobrý den, je možné, napsat v jedné buňce bylo napsáno číslo např 100 a v druhé buňce bylo automaticky převedeno na text? Děkuji
user avatar kamlan
Odpovědět
Re:Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
19. 03. 2021, 21:13:48
Mělo by to jít i fcí TEXT
viz. Nápověda https://help.libreoffice.org/latest/cs/text/scalc/01/04060110.html?DbPAR=CALC#bm_id3147132
user avatar kabi
Odpovědět
Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
19. 03. 2021, 10:07:51
lze to vyřešit vlastním formátem čísla, kdy do formátu zadáte následující formátovací text (bez apostrofů), např. '[NatNum12]0', v případě desetinného čísla např. '[NatNum12]0,00'.
Čeština není ale úplně ideální + plus to převádí i 'čárku', pokud byste to chtěl "správně česky", tak asi jedině pomocí makra.
user avatar Michal
Odpovědět
Re:Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
19. 03. 2021, 10:19:40
Děkuji

Odpovědět

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
 
 
woo jaw demo hz