Ako odstrániť duplikáty v bunke v programe Excel

  • Zdieľajte To
Michael Brown

Existujú tri spôsoby vyhľadávania a odstraňovania duplikátov v rámci bunky v programe Excel. Stačí si vybrať ten, ktorý vám najviac vyhovuje.

Pokiaľ ide o odstraňovanie duplicitných hodnôt alebo riadkov, Microsoft Excel ponúka celý rad rôznych možností. Ale pokiaľ ide o odstraňovanie rovnakého textu v danej bunke, Excel neposkytuje... nič. Žiadne nástroje, žiadne funkcie, žiadne vzorce, nič. Zabráni nám to v dosiahnutí nášho cieľa? V žiadnom prípade. Ak Excel nemá funkciu, ktorú potrebujeme, poďme si napísať vlastnú :)

    Ako odstrániť opakujúce sa slová v bunke programu Excel

    Problém : V bunke máte rovnaké slová alebo textové reťazce a chcete odstrániť druhé a všetky nasledujúce opakovania.

    Riešenie : vlastná používateľom definovaná funkcia alebo makro VBA.

    Užívateľsky definovaná funkcia na odstránenie duplikátov v rámci bunky

    Na odstránenie duplicitného textu v bunke môžete použiť nasledujúcu používateľsky definovanú funkciu (UDF) s názvom 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) Else RemoveDupeWords = "" End If Set dictionary = Nothing End Function

    Ako vložiť kód funkcie do zošita

    Ak chcete pridať vyššie uvedený kód do programu Excel, musíte urobiť toto:

    1. Stlačením klávesov Alt + F11 otvorte editor jazyka Visual Basic.
    2. Na ľavom paneli kliknite pravým tlačidlom myši na Tento pracovný zošit a vyberte Vložte > Modul .
    3. Vložte vyššie uvedený kód do Kód okno.

    Ďalšie informácie nájdete v časti Ako vložiť kód VBA do aplikácie Excel.

    Syntax funkcie RemoveDupeWords

    Naša novovytvorená funkcia na odstránenie duplicitného textu v bunke má nasledujúcu syntax:

    RemoveDupeWords(text, [delimiter])

    Kde:

    • Text (povinné) - reťazec alebo bunka, z ktorej chcete odstrániť opakujúci sa text.
    • Oddeľovač (nepovinné) - oddeľovač, ktorým je opakovaný text oddelený. Ak sa vynechá, použije sa ako oddeľovač medzera.

    Funkcia je nerozlišuje veľké a malé písmená , čo znamená, že malé a veľké písmená sa považujú za rovnaké znaky.

    Ako používať funkciu RemoveDupeWords

    Po pridaní kódu funkcie do zošita ju môžete používať vo vzorcoch rovnakým spôsobom ako vstavané funkcie programu Excel.

    Stačí začať písať názov funkcie za znamienkom rovnosti a objaví sa v intellisense vzorca. Dvakrát kliknite na funkciu a budete ju mať vloženú v bunke. Definujte argumenty, zadajte uzatváraciu zátvorku, stlačte Enter , a váš vzorec je hotový.

    Ak chcete napríklad z A2 odstrániť duplicitné slová oddelené čiarkou a medzerou, zadajte do bunky B2 nasledujúci vzorec a potom ho potiahnite nadol cez toľko buniek, koľko potrebujete:

    =RemoveDupeWords(A2, ", ")

    Výsledkom bude zoznam jedinečných slov alebo podreťazcov oddelených znakom čiarka a medzera :

    Ak chcete radšej získať zoznam oddelený čiarkou, použite iba čiarka pre oddeľovač:

    =RemoveDupeWords(A2, ",")

    Ak sú vaše zdrojové údaje oddelené znakom priestor , druhý argument by mal byť " " alebo vynechaný:

    =RemoveDupeWords(A2)

    Podobne ako každá iná funkcia programu Excel, aj naša UDF sa automaticky prepočítava pri zmene zdrojových údajov, takže vaše výsledky budú vždy aktuálne.

    Makro VBA na odstránenie duplicitného textu z viacerých buniek naraz

    Ak chcete odstrániť opakujúci sa text z viacerých buniek naraz, môžete zavolať RemoveDupeWords V tomto prípade je oddeľovač pevne zakódovaný a budete musieť aktualizovať kód makra vždy, keď sa oddeľovač zmení. Alternatívne môžete napísať niekoľko variantov kódu pre najbežnejšie oddeľovače, napríklad medzeru, čiarku alebo čiarku a medzeru, a dať makrám zmysluplné názvy, napr. RemoveDupesDelimSpace .

    Kód makra je nasledujúci:

    Public Sub RemoveDupeWords2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeWords(cell.Value, ", " ) Next End Sub

    Vo vyššie uvedenom kóde je oddeľovačom čiarka a medzera Ak chcete použiť iný oddeľovač, nahraďte ", " iným znakom (znakmi) v tomto riadku kódu:

    cell.Value = RemoveDupeWords(cell.Value, ", ")

    Poznámka: Aby makro fungovalo, jeho kód a kód funkcie RemoveDupeWords musia byť umiestnené v tom istom module.

    Ako používať makro

    Vložte kód makra do vlastného zošita alebo otvorte náš vzorový zošit s kódom a potom vykonajte nasledujúce kroky na spustenie makra.

    1. Vyberte rozsah buniek, z ktorých chcete odstrániť opakujúci sa text.
    2. Stlačením Alt + F8 otvorte Makro dialógové okno.
    3. V zozname makier vyberte RemoveDupeWords2 .
    4. Kliknite na . Spustiť .

    Ďalšie podrobnosti nájdete v časti Ako spustiť makro v programe Excel.

    Poznámka. Pretože akcia makra sa nedá vrátiť späť , dôrazne odporúčame uložiť zošit tesne pred použitím makra. Ak sa niečo pokazí, môžete zošit jednoducho zatvoriť a znovu otvoriť a budete presne tam, kde ste boli. Alebo si môžete jednoducho vytvoriť kópiu pracovného hárku (hárkov), ktoré by mohlo makro ovplyvniť.

    Ako odstrániť duplicitné znaky v bunke

    Problém : V bunke sa vyskytuje viacero rovnakých znakov, pričom každá bunka by mala obsahovať len jeden výskyt daného znaku.

    Riešenie : vlastná používateľom definovaná funkcia alebo makro VBA.

    Užívateľsky definovaná funkcia na odstránenie opakujúcich sa znakov

    Ak chcete odstrániť duplicitné znaky v bunke, pričom zachováte len prvé výskyty, môžete použiť nasledujúcu používateľskú funkciu s názvom 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 Function

    Ak chcete vložiť kód funkcie do zošita, postupujte presne rovnako ako v predchádzajúcom príklade.

    Syntax funkcie RemoveDupeChars

    Syntax tejto vlastnej funkcie je maximálne jednoduchá - vyžaduje sa len jeden argument:

    RemoveDupeChars(text)

    Kde text je reťazec alebo bunka, z ktorej chcete odstrániť duplicitné znaky.

    Funkcia je rozlišovanie veľkých a malých písmen a považuje malé a veľké písmená za rôzne znaky.

    Ako používať funkciu RemoveDupeChars

    Všetko, čo sme povedali o použití funkcie RemoveDupeWords, platí aj pre RemoveDupeChars Bez zbytočného rozoberania teórie prejdime rovno k príkladu.

    Ak chcete odstrániť duplicitné znaky zo stĺpca A začínajúceho v A2, zadajte tento vzorec do B2 a skopírujte ho nadol:

    =RemoveDupeChars(A2)

    Ako môžete vidieť na obrázku nižšie, funkcia úspešne spracováva rôzne typy znakov vrátane písmen, číslic a špeciálnych symbolov:

    Tip. Ak sú vaše postavy od seba oddelené oddeľovač ako je medzera, čiarka alebo pomlčka, potom použite RemoveDupeWords ako je uvedené v predchádzajúcom príklade.

    Makro VBA na odstránenie rovnakých znakov z bunky

    Rovnako ako RemoveDupeWords ,. RemoveDupeChars funkciu možno zavolať aj z makra:

    Public Sub RemoveDupeChars2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeChars(cell.Value) Next End Sub

    Keďže tento UDF nepoužíva žiadny oddeľovač, nebudete musieť v kóde robiť žiadne úpravy.

    Poznámka: Aby makro fungovalo, musí byť jeho kód a kód RemoveDupeChars UDF umiestnený v tom istom module v editore VBA.

    Ako používať makro

    Za predpokladu, že ste už vložili kód makra do svojho zošita alebo ste otvorili náš vzorový zošit obsahujúci kód, spustite makro týmto spôsobom.

    1. Vyberte rozsah buniek, z ktorých chcete odstrániť opakujúce sa znaky.
    2. Stlačením Alt + F8 otvorte Makro dialógové okno.
    3. V zozname makier vyberte RemoveDupeChars2 .
    4. Kliknite na . Spustiť .

    Odstránenie duplicitných podreťazcov pomocou balíka Ultimate Suite

    Na začiatku tohto návodu bolo spomenuté, že Microsoft Excel nemá vstavanú funkciu na odstránenie duplikátov v bunke. Ale náš balík Ultimate Suite ju má!

    Nájdete ho v Odstránenie duplikátov rozbaľovacie menu na Údaje Ablebits na karte Dedupe skupina. Ak Odstránenie duplicitných podreťazcov sa vo vašom programe Excel nezobrazuje, uistite sa, že máte nainštalovanú najnovšiu verziu balíka Ultimate Suite (bezplatnú skúšobnú verziu si môžete stiahnuť tu).

    Ak chcete odstrániť opakujúce sa slová alebo text z viacerých buniek za 5 sekúnd (sekundu na krok :), musíte urobiť toto:

    1. Vyberte zdrojové údaje a spustite Odstránenie duplicitných podreťazcov nástroj.
    2. Zadajte oddeľovač .
    3. Určiť, či sa má liečiť po sebe idúce oddeľovače ako jedna (predvolené).
    4. Vyberte, či chcete vykonať rozlišovanie veľkých a malých písmen alebo rozlišovanie veľkých a malých písmen vyhľadávanie.
    5. Kliknite na . Odstránenie stránky .

    Hotovo! Žiadne manipulovanie s VBA alebo vzorcami, len rýchle a presné výsledky.

    Ak sa chcete dozvedieť viac o tomto úžasnom doplnku, navštívte jeho domovskú stránku. Alebo ešte lepšie, stiahnite si nižšie uvedenú skúšobnú verziu a vyskúšajte ju!

    To je spôsob, ako odstrániť duplicitný text v bunke. Ďakujem vám za prečítanie a dúfam, že sa uvidíme na našom blogu budúci týždeň!

    Dostupné súbory na stiahnutie

    Príklady na odstránenie duplikátov v bunkách (.xlsm súbor)

    14-dňová plne funkčná verzia balíka Ultimate Suite (.exe súbor)

    Michael Brown je nadšený technologický nadšenec s vášňou pre zjednodušovanie zložitých procesov pomocou softvérových nástrojov. S viac ako desaťročnými skúsenosťami v technologickom priemysle si zdokonalil svoje zručnosti v programoch Microsoft Excel a Outlook, ako aj Tabuľky Google a Dokumenty. Michaelov blog je venovaný zdieľaniu svojich vedomostí a odborných znalostí s ostatnými a poskytuje jednoduché tipy a návody na zlepšenie produktivity a efektivity. Či už ste skúsený profesionál alebo začiatočník, Michaelov blog ponúka cenné poznatky a praktické rady, ako z týchto základných softvérových nástrojov vyťažiť maximum.