Obsah
Existují tři způsoby, jak v Excelu najít a odstranit duplikáty v buňce. Stačí si vybrat ten, který vám nejlépe vyhovuje.
Pokud jde o odstraňování duplicitních hodnot nebo řádků, nabízí Microsoft Excel celou řadu různých možností. Ale pokud jde o odstraňování stejného textu v dané buňce, Excel neposkytuje... nic. Žádné nástroje, žádné funkce, žádné vzorce, nic. Zabrání nám to v dosažení našeho cíle? V žádném případě. Pokud Excel nemá funkci, kterou potřebujeme, pojďme si napsat vlastní :)
Jak odstranit opakující se slova v buňce aplikace Excel
Problém : V buňce jsou stejná slova nebo textové řetězce a chcete odstranit druhé a všechna další opakování.
Řešení : vlastní uživatelsky definovaná funkce nebo makro VBA.
Uživatelsky definovaná funkce pro odstranění duplicit v buňce
K odstranění duplicitního textu v buňce můžete použít následující uživatelsky definovanou funkci (UDF) s názvem RemoveDupeWords :
Function RemoveDupeWords(text As String , Optional delimiter As String = " " ) As String Dim dictionary As Object Dim x, part Set dictionary = CreateObject ("Scripting.Dictionary" ) dictionary.CompareMode = vbTextCompare For Each x In Split(text, delimiter) part = Trim(x) If part "" And Not dictionary.Exists(part) Then dictionary.Add part, Nothing End If Next If dictionary.Count> 0 ThenRemoveDupeWords = Join(dictionary.keys, delimiter) Jinak RemoveDupeWords = "" End If Set dictionary = Nothing End FunctionJak vložit kód funkce do sešitu
Chcete-li přidat výše uvedený kód do aplikace Excel, musíte provést následující kroky:
- Stisknutím kláves Alt + F11 otevřete editor jazyka Visual Basic.
- V levém podokně klikněte pravým tlačítkem myši na ThisWorkbook a vyberte Vložte > Modul .
- Vložte výše uvedený kód do Kód okno.
Další informace naleznete v části Jak vložit kód VBA do aplikace Excel.
Syntaxe funkce RemoveDupeWords
Naše nově vytvořená funkce pro odstranění duplicitního textu v buňce má následující syntaxi:
RemoveDupeWords(text, [delimiter])Kde:
- Text (povinné) - řetězec nebo buňka, ze které chcete odstranit opakující se text.
- Oddělovač (nepovinné) - oddělovač, kterým je oddělen opakovaný text. Pokud je vynechán, použije se jako oddělovač mezera.
Funkce je nerozlišuje velká a malá písmena , což znamená, že malá a velká písmena jsou považována za stejné znaky.
Jak používat funkci RemoveDupeWords
Po přidání kódu funkce do sešitu ji můžete používat ve vzorcích stejným způsobem jako vestavěné funkce aplikace Excel.
Stačí začít psát název funkce za znaménkem rovnítka, a ten se objeví v intellisense vzorců. Dvakrát na funkci klikněte a budete ji mít vloženou v buňce. Definujte argumenty, zadejte uzavírací závorku, stiskněte Enter , a vzorec je hotový.
Chcete-li například z A2 odstranit duplicitní slova oddělená čárkou a mezerou, zadejte do B2 následující vzorec a poté jej přetáhněte dolů přes tolik buněk, kolik je třeba:
=RemoveDupeWords(A2, ", ")
Výsledkem bude seznam jedinečných slov nebo podřetězců oddělených znakem čárka a mezera :
Pokud chcete raději získat seznam oddělený čárkou, použijte příkaz pouze čárka pro oddělovač:
=RemoveDupeWords(A2, ",")
Pokud jsou vaše zdrojová data oddělena prostor , druhý argument by měl být " " nebo vynechán:
=RemoveDupeWords(A2)
Stejně jako každá jiná funkce aplikace Excel se i naše UDF automaticky přepočítává při změně zdrojových dat, takže vaše výsledky budou vždy aktuální.
Makro VBA pro odstranění duplicitního textu z více buněk najednou
Pokud chcete odstranit opakující se text z více buněk najednou, můžete zavolat příkaz RemoveDupeWords V tomto případě je oddělovač pevně zadán a při každé změně oddělovače budete muset aktualizovat kód makra. Alternativně můžete napsat několik variant kódu pro nejběžnější oddělovače, například mezeru, čárku nebo čárku a mezeru, a makra smysluplně pojmenovat, např. RemoveDupesDelimSpace .
Kód makra je následující:
Public Sub RemoveDupeWords2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeWords(cell.Value, ", " ) Next End SubVe výše uvedeném kódu je oddělovačem znak čárka a mezera Chcete-li použít jiný oddělovač, nahraďte znak ", " jiným znakem (znaky) v tomto řádku kódu:
cell.Value = RemoveDupeWords(cell.Value, ", ")
Poznámka: Aby makro fungovalo, musí být jeho kód a kód funkce RemoveDupeWords umístěn ve stejném modulu.
Jak používat makro
Vložte kód makra do vlastního sešitu nebo otevřete náš ukázkový sešit s kódem a poté proveďte následující kroky ke spuštění makra.
- Vyberte rozsah buněk, ze kterých chcete odstranit opakující se text.
- Stisknutím kláves Alt + F8 otevřete Makro dialogové okno.
- V seznamu maker vyberte RemoveDupeWords2 .
- Klikněte na Spustit .
Další podrobnosti naleznete v části Jak spustit makro v aplikaci Excel.
Poznámka: Protože akce makra nelze vzít zpět , důrazně doporučujeme uložit sešit těsně před použitím makra. Pokud se něco pokazí, můžete sešit jednoduše zavřít a znovu otevřít a budete přesně tam, kde jste byli. Nebo si můžete vytvořit kopii listu (listů), které by mohly být makrem ovlivněny.
Jak odstranit duplicitní znaky v buňce
Problém : V buňce se vyskytuje více stejných znaků, přičemž každá buňka by měla obsahovat pouze jeden výskyt daného znaku.
Řešení : vlastní uživatelsky definovaná funkce nebo makro VBA.
Uživatelsky definovaná funkce pro odstranění opakujících se znaků
Chcete-li odstranit duplicitní znaky v buňce a zachovat pouze první výskyty, můžete použít následující uživatelsky definovanou funkci s názvem RemoveDupeChars :
Function RemoveDupeChars(text As String ) As String Dim dictionary As Object Dim char As String Dim result As String Set dictionary = CreateObject ("Scripting.Dictionary" ) For i = 1 To Len(text) char = Mid(text, i, 1) If Not dictionary.Exists(char) Then dictionary.Add char, Nothing result = result & char End If Next RemoveDupeChars = result Set dictionary = Nothing End FunctionChcete-li vložit kód funkce do sešitu, postupujte stejně jako v předchozím příkladu.
Syntaxe funkce RemoveDupeChars
Syntaxe této vlastní funkce je maximálně jednoduchá - vyžaduje pouze jeden argument:
RemoveDupeChars(text)Kde: text je řetězec nebo buňka, ze které chcete odstranit duplicitní znaky.
Funkce je rozlišování velkých a malých písmen a považuje malá a velká písmena za různé znaky.
Jak používat funkci RemoveDupeChars
Vše, co jsme řekli o použití funkce RemoveDupeWords, platí i pro funkci RemoveDupeChars Aniž bychom se zabývali teorií, přejděme rovnou k příkladu.
Chcete-li odstranit duplicitní znaky ze sloupce A začínajícího v A2, zadejte tento vzorec do B2 a zkopírujte jej dolů:
=RemoveDupeChars(A2)
Jak vidíte na obrázku níže, funkce úspěšně zpracovává různé typy znaků včetně písmen, číslic a speciálních symbolů:
Tip. Pokud jsou vaše postavy od sebe odděleny nějakou vzdáleností. oddělovač jako je mezera, čárka nebo pomlčka, pak použijte příkaz RemoveDupeWords jak je uvedeno v předchozím příkladu.
Makro VBA pro odstranění stejných znaků z buňky
Stejně jako RemoveDupeWords ... RemoveDupeChars funkci lze volat také z makra:
Public Sub RemoveDupeChars2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeChars(cell.Value) Next End SubProtože tento UDF nepoužívá žádný oddělovač, nemusíte v kódu provádět žádné úpravy.
Poznámka: Aby makro fungovalo, musí být jeho kód a kód RemoveDupeChars UDF umístěn v editoru VBA do stejného modulu.
Jak používat makro
Za předpokladu, že jste již vložili kód makra do sešitu nebo jste otevřeli náš ukázkový sešit obsahující kód, spusťte makro tímto způsobem.
- Vyberte rozsah buněk, ze kterých chcete odstranit opakující se znaky.
- Stisknutím kláves Alt + F8 otevřete Makro dialogové okno.
- V seznamu maker vyberte RemoveDupeChars2 .
- Klikněte na Spustit .
Odstranění duplicitních podřetězců pomocí sady Ultimate Suite
Na začátku tohoto návodu bylo zmíněno, že Microsoft Excel nemá vestavěnou funkci pro odstranění duplicit v buňce. Ale naše sada Ultimate Suite ji má!
Najdete ji v Odstraňovač duplikátů v rozevírací nabídce Data Ablebits na kartě Dedupe skupina. Pokud Odstranění duplicitních podřetězců se v aplikaci Excel nezobrazuje, zkontrolujte, zda máte nainstalovanou nejnovější verzi sady Ultimate Suite (zkušební verzi si můžete stáhnout zdarma zde).
Chcete-li odstranit opakující se slova nebo text z více buněk za 5 sekund (sekundu na krok :), musíte udělat toto:
- Vyberte zdrojová data a spusťte Odstranění duplicitních podřetězců nástroj.
- Zadejte oddělovač .
- Určete, zda léčit po sobě jdoucí oddělovače jako jedna (výchozí).
- Zvolte, zda chcete provést rozlišování velkých a malých písmen nebo rozlišování velkých a malých písmen vyhledávání.
- Klikněte na Odstranění adresy .
Hotovo! Žádné hraní si s VBA nebo vzorci, jen rychlé a přesné výsledky.
Chcete-li se o tomto úžasném doplňku dozvědět více, navštivte jeho domovskou stránku. Nebo ještě lépe, stáhněte si níže uvedenou zkušební verzi a vyzkoušejte ji!
Takto se odstraňuje duplicitní text v buňce. Děkuji vám za přečtení a doufám, že se příští týden uvidíme na našem blogu!
Dostupné soubory ke stažení
Příklady odstranění duplicit v buňce (.xlsm soubor)
Ultimate Suite 14denní plně funkční verze (.exe soubor)