Obsah
Výukový program vysvětluje funkce REPLACE a SUBSTITUTE aplikace Excel s příklady použití. Podívejte se, jak používat funkci REPLACE s textovými řetězci, čísly a daty a jak vnořit několik funkcí REPLACE nebo SUBSTITUTE do jednoho vzorce.
Minulý týden jsme se zabývali různými způsoby použití funkcí FIND a SEARCH v rámci pracovních listů aplikace Excel. Dnes se podrobněji podíváme na další dvě funkce, které umožňují nahradit text v buňce na základě jeho umístění nebo nahradit jeden textový řetězec jiným na základě obsahu. Jak jste možná uhodli, mluvím o funkcích REPLACE a SUBSTITUTE aplikace Excel.
Funkce REPLACE aplikace Excel
Funkce REPLACE v aplikaci Excel umožňuje zaměnit jeden nebo několik znaků v textovém řetězci za jiný znak nebo sadu znaků.
REPLACE(starý_text, start_číslo, počet_znaků, nový_text)Jak vidíte, funkce REPLACE aplikace Excel má 4 argumenty, z nichž všechny jsou povinné.
- Old_text - původní text (nebo odkaz na buňku s původním textem), ve kterém chcete nahradit některé znaky.
- Start_num - pozice prvního znaku v old_text, který chcete nahradit.
- Num_chars - počet znaků, které chcete nahradit.
- New_text - náhradní text.
Chcete-li například změnit slovo " slunce " na " syn ", můžete použít následující vzorec:
=REPLACE("sun", 2, 1, "o")
A pokud původní slovo vložíte do nějaké buňky, například A2, můžete v argumentu old_text zadat odkaz na příslušnou buňku:
=REPLACE(A2, 2, 1, "o")
Poznámka: Pokud je argument start_num nebo num_chars záporný nebo nečíselný, vzorec Excel Replace vrátí chybu #VALUE!.
Použití funkce REPLACE aplikace Excel s číselnými hodnotami
Funkce REPLACE v aplikaci Excel je určena pro práci s textovými řetězci. Samozřejmě ji můžete použít například k nahrazení číselných znaků, které jsou součástí textového řetězce:
=REPLACE(A2, 7, 4, "2016")
Všimněte si, že slovo "2016" uzavíráme do dvojitých uvozovek, jak se to obvykle dělá u textových hodnot.
Podobným způsobem můžete nahradit jednu nebo více číslic v rámci čísla. Například:
=REPLACE(A4, 4, 4, "6")
A opět je nutné uzavřít náhradní hodnotu do dvojitých uvozovek ("6").
Poznámka: Vzorec REPLACE aplikace Excel vždy vrací hodnotu textový řetězec , nikoliv číslo. Na výše uvedeném obrázku si všimněte zarovnání vrácené textové hodnoty v B2 doleva a porovnejte ji s původním číslem zarovnaným doprava v A2. A protože se jedná o textovou hodnotu, nebudete ji moci použít v dalších výpočtech, pokud ji nepřevedete zpět na číslo, například vynásobením 1 nebo jinou metodou popsanou v části Jak převést text na číslo.
Použití funkce REPLACE aplikace Excel s daty
Jak jste se právě přesvědčili, funkce REPLACE funguje dobře i s čísly, jen vrací textový řetězec :) Nezapomeňte, že v interním systému Excelu jsou data uložena jako čísla, můžete se pokusit použít některé vzorce Replace na data. Výsledky by byly dost rozpačité.
Například máte v A2 datum, například 1. října 14, a chcete změnit " Říjen " na " Nov ". Napíšete tedy vzorec REPLACE(A2, 4, 3, "Nov"), který Excelu řekne, aby nahradil 3 znaky v buňkách A2 počínaje 4. znakem... a dostanete následující výsledek:
Proč? Protože "01-Oct-14" je pouze vizuální reprezentace základního sériového čísla (41913), které představuje datum. Takže náš vzorec Replace změní poslední 3 číslice výše uvedeného sériového čísla na "". Nov " a vrátí textový řetězec "419Nov".
Aby funkce REPLACE aplikace Excel správně pracovala s daty, můžete nejprve převést data na textové řetězce pomocí funkce TEXT nebo jiné techniky uvedené v článku Jak převést datum na text v aplikaci Excel. Případně můžete funkci TEXT vložit přímo do argumentu old_text funkce REPLACE:
=REPLACE(TEXT(A2, "dd-mmm-r"), 4, 3, "Nov")
Nezapomeňte, že výsledkem výše uvedeného vzorce je. textový řetězec , a proto toto řešení funguje pouze v případě, že neplánujete použít upravená data v dalších výpočtech. Pokud potřebujete data namísto textových řetězců, použijte funkci DATEVALUE, která hodnoty vrácené funkcí Excel REPLACE změní zpět na data:
=DATEVALUE(REPLACE(TEXT(A2, "dd-mmm-yy"), 4, 3, "Nov"))
Vnořené funkce REPLACE pro vícenásobné nahrazení v buňce
Často se může stát, že budete potřebovat provést více než jedno nahrazení v téže buňce. Samozřejmě můžete provést jedno nahrazení, vypsat mezivýsledek do dalšího sloupce a pak znovu použít funkci REPLACE. Lepší a profesionálnější způsob je však použít funkci vnořené funkce REPLACE které umožňují provést několik nahrazení pomocí jediného vzorce. V tomto kontextu "vnoření" znamená umístění jedné funkce do druhé.
Předpokládejme, že máte seznam telefonních čísel ve sloupci A naformátovaný jako "123456789" a chcete, aby vypadala spíše jako telefonní čísla přidáním pomlček. Jinými slovy, vaším cílem je změnit "123456789" na "123-456-789".
Vložení první pomlčky je snadné. Napíšete obvyklý vzorec Excelu Nahradit, který nahradí nulové znaky s pomlčkou, tj. přidá pomlčku na 4. pozici v buňce:
=REPLACE(A2,4,0,"-")
Výsledek výše uvedeného vzorce Nahradit je následující:
Dobře, a nyní potřebujeme vložit ještě jednu pomlčku na 8. pozici. To provedete tak, že výše uvedený vzorec umístíte do další funkce Excelu REPLACE. Přesněji řečeno, vložíte jej do funkce old_text argumentu druhé funkce, takže druhá funkce REPLACE bude zpracovávat hodnotu vrácenou první funkcí REPLACE, a ne hodnotu v buňce A2:
=REPLACE(REPLACE(A2,4,0,"-"),8,0,"-")
Výsledkem je získání telefonních čísel v požadovaném formátování:
Podobným způsobem můžete pomocí vnořených funkcí REPLACE vytvořit textové řetězce, které budou vypadat jako data, a to přidáním lomítka vpřed (/) tam, kde je to vhodné:
=(REPLACE(REPLACE(A2,3,0,"/"),6,0,"/"))
Kromě toho můžete textové řetězce převést na skutečná data tak, že výše uvedený vzorec REPLACE obalíte funkcí DATEVALUE:
=DATEVALUE(REPLACE(REPLACE(A2,3,0,"/"),6,0,"/"))
A samozřejmě nejste omezeni počtem funkcí, které můžete vnořit do jednoho vzorce (moderní verze aplikace Excel 2010, 2013 a 2016 umožňují až 8192 znaků a až 64 vnořených funkcí ve vzorci).
Například můžete použít 3 vnořené funkce REPLACE, aby se číslo v A2 zobrazilo jako datum a čas:
=REPLACE(REPLACE(REPLACE(REPLACE(A2,3,0,"/") ,6,0,"/"), 9,0, " "), 12,0, ":")
Nahrazení řetězce, který se v každé buňce objevuje na jiném místě
Dosud jsme se ve všech příkladech zabývali hodnotami podobného charakteru a nahrazovali jsme je na stejném místě v každé buňce. Úlohy v reálném životě jsou však často složitější. Ve vašich pracovních listech se znaky, které mají být nahrazeny, nemusí nutně vyskytovat na stejném místě v každé buňce, a proto budete muset zjistit pozici prvního znaku které by měly být nahrazeny. Následující příklad ukáže, o čem mluvím.
Předpokládejme, že máte seznam e-mailových adres ve sloupci A. A název jedné společnosti se změnil z "ABC" na například "BCA". Musíte tedy odpovídajícím způsobem aktualizovat e-mailové adresy všech klientů.
Problém však spočívá v tom, že názvy klientů mají různou délku, a proto nemůžete přesně určit, kde začíná název firmy. Jinými slovy, nevíte, jakou hodnotu máte zadat do argumentu start_num funkce Excel REPLACE. Chcete-li to zjistit, použijte funkci Excel FIND a určete pozici prvního znaku v řetězci "@abc":
=FIND("@abc",A2)
A poté zadejte výše uvedenou funkci FIND do argumentu start_num vzorce REPLACE:
=REPLACE(A2, FIND("@abc",A2), 4, "@bca")
Tip: Do vzorce pro vyhledávání a nahrazování v aplikaci Excel zahrnujeme znak "@", abychom zabránili náhodným záměnám v části jména e-mailových adres. Samozřejmě je velmi malá pravděpodobnost, že k takové shodě dojde, a přesto se můžete chtít pojistit.
Jak vidíte na následujícím obrázku, vzorec nemá problém s nalezením a nahrazením starého textu novým. Pokud však textový řetězec, který má být nahrazen, není nalezen, vzorec vrátí chybu #VALUE!:
A my chceme, aby vzorec vrátil původní e-mailovou adresu místo chyby. Proto uzavřeme náš vzorec FIND & REPLACE do funkce IFERROR:
=IFERROR(REPLACE(A2, FIND("@abc",A2), 4, "@bca"),A2)
A tento vylepšený vzorec funguje dokonale, že?
Dalším praktickým využitím funkce REPLACE je změna prvního písmene v buňce na velké. Kdykoli pracujete se seznamem jmen, výrobků a podobně, můžete použít výše uvedený vzorec pro změnu prvního písmene na velké písmeno.
Tip: Pokud chcete provést nahrazení v původních datech, je jednodušší použít dialogové okno Excel FIND and REPLACE.
Funkce SUBSTITUTE aplikace Excel
Funkce SUBSTITUTE v aplikaci Excel nahradí jeden nebo více výskytů daného znaku nebo textového řetězce zadaným znakem (znaky).
Syntaxe funkce SUBSTITUTE aplikace Excel je následující:
SUBSTITUTE(text, old_text, new_text, [instance_num])První tři argumenty jsou povinné a poslední je nepovinný.
- Text - původní text, ve kterém chcete nahradit znaky. Lze zadat jako testovací řetězec, odkaz na buňku nebo výsledek jiného vzorce.
- Old_text - znak(y), které chcete nahradit.
- New_text - nový znak (znaky), kterým se nahradí starý_text.
- Instance_num - výskyt old_text, který chcete nahradit. Pokud je vynechán, každý výskyt starého textu bude změněn na nový text.
Například všechny níže uvedené vzorce nahradí v buňce A2 číslo "1" číslem "2", ale vrátí různé výsledky v závislosti na tom, jaké číslo zadáte jako poslední argument:
=SUBSTITUTE(A2, "1", "2", 1)
- Nahradí první výskyt slova "1" slovem "2".
=SUBSTITUTE(A2, "1", "2", 2)
- Nahradí druhý výskyt slova "1" slovem "2".
=SUBSTITUTE(A2, "1", "2")
- Nahradí všechny výskyty "1" znakem "2".
V praxi se funkce SUBSTITUTE používá také k odstranění nežádoucích znaků z buněk. Příklady z praxe naleznete na adrese:
- Jak odstranit znaky nebo slova z řetězce
- Jak odstranit nežádoucí znaky z buněk
Poznámka: Funkce SUBSTITUTE v aplikaci Excel je. rozlišování velkých a malých písmen Například následující vzorec nahradí všechny případy velkých písmen "X" písmenem "Y" v buňce A2, ale nenahradí žádné případy malých písmen "x".
Nahrazení více hodnot jedním vzorcem (vnořený vzorec SUBSTITUTE)
Stejně jako v případě funkce REPLACE aplikace Excel můžete do jednoho vzorce vnořit několik funkcí SUBSTITUTE a provést tak několik záměn najednou, tj. nahradit několik znaků nebo podřetězců jedním vzorcem.
Předpokládejme, že máte textový řetězec typu " PR1, ML1, T1 " v buňce A2, kde "PR" znamená "Projekt", "ML" znamená "Milník" a "T" znamená "Úkol". To, co chcete, je nahradit tyto tři kódy plnými názvy. Abyste toho dosáhli, můžete napsat 3 různé vzorce SUBSTITUTE:
=SUBSTITUTE(A2, "PR", "Projekt ")
=SUBSTITUTE(A2, "ML", "Milník ")
=SUBSTITUTE(A2, "T", "Úkol ")
A pak je do sebe vnořte:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "PR", "Projekt "), "ML", "Milník "), "T", "Úkol ")
Všimněte si, že jsme pro lepší čitelnost přidali na konec každého argumentu new_text mezeru.
Další způsoby nahrazení více hodnot najednou naleznete v části Jak hromadně najít a nahradit v aplikaci Excel.
Excel REPLACE vs. Excel SUBSTITUTE
Funkce REPLACE a SUBSTITUTE v aplikaci Excel jsou si navzájem velmi podobné, protože obě slouží k výměně textových řetězců. Rozdíly mezi oběma funkcemi jsou následující:
- SUBSTITUTE nahrazuje jeden nebo více instance daného znaku nebo textového řetězce. Pokud tedy znáte text, který má být nahrazen, použijte funkci SUBSTITUTE aplikace Excel.
- REPLACE změní znaky v zadaném pozice textového řetězce. Pokud tedy znáte pozici nahrazovaného znaku (znaků), použijte funkci Excel REPLACE.
- Funkce SUBSTITUTE v aplikaci Excel umožňuje přidat nepovinný parametr (číslo_instance), který určuje, které výskyt starého_textu by měl být změněn na nový_text.
Takto se v Excelu používají funkce SUBSTITUTE a REPLACE. Doufám, že se vám tyto příklady budou hodit při řešení vašich úloh. Děkuji vám za přečtení a doufám, že se na našem blogu uvidíme příští týden!
Stáhnout cvičebnici
Příklady vzorců REPLACE a SUBSTITUTE (.xlsx soubor)