Note: The other languages of the website are Google-translated. Back to English
English English

Jak odstranit duplicitní znaky nebo slova v řetězci buňky?

Předpokládejme, že v každé buňce jsou duplicitní znaky nebo slova, a chcete duplikáty odstranit a ponechat pouze jedinečné znaky nebo slova. Jak byste mohli tento problém vyřešit v aplikaci Excel?

Odstraňte duplicitní znaky textového řetězce pomocí funkce definované uživatelem

Odstraňte duplicitní slova oddělená interpunkcí pomocí funkce definované uživatelem


šipka modrá pravá bublina Odstraňte duplicitní znaky textového řetězce pomocí funkce definované uživatelem

Pokud máte seznam textového řetězce, musíte nyní odstranit duplicitní znaky, jak ukazuje následující snímek obrazovky. Tady mohu mluvit o kódu VBA, abych se s ním vypořádal.

doc-remove-duplicate-characters-1

1. Podržte ALT + F11 klávesy pro otevření Okno Microsoft Visual Basic pro aplikace.

2, klikněte Vložit > Modula vložte následující kód do Okno modulu.

Kód VBA: Odstraňte duplicitní znaky textového řetězce v buňce

Function RemoveDupes1(pWorkRng As Range) As String
'Updateby Extendoffice
Dim xValue As String
Dim xChar As String
Dim xOutValue As String
Set xDic = CreateObject("Scripting.Dictionary")
xValue = pWorkRng.Value
For i = 1 To VBA.Len(xValue)
    xChar = VBA.Mid(xValue, i, 1)
    If xDic.Exists(xChar) Then
    Else
        xDic(xChar) = ""
        xOutValue = xOutValue & xChar
    End If
Next
RemoveDupes1 = xOutValue
End Function

3. Poté tento kód uložte a zavřete, vraťte se do listu a zadejte tento vzorec = odstraněnoupes1 (A2) (A2 je datová buňka, ze které chcete odebrat duplikáty) do prázdné buňky kromě vašich dat, viz screenshot:

doc-remove-duplicate-characters-1

4. A potom přetáhněte úchyt výplně do buněk rozsahu, na které chcete použít tento vzorec, všechny duplicitní znaky byly z každé buňky okamžitě odstraněny.

doc-remove-duplicate-characters-1


šipka modrá pravá bublina Odstraňte duplicitní slova oddělená interpunkcí pomocí funkce definované uživatelem

Pokud jsou v buňce některá slova oddělená určitými interpunkčními znaménky, můžete duplicitní slova také odstranit, jak chcete. Proveďte prosím následující kroky:

1. Podržte stisknuté tlačítko ALT + F11 klávesy pro otevření Okno Microsoft Visual Basic pro aplikace.

2, klikněte Vložit > Modula vložte následující kód do Okno modulu.

Kód VBA: Odstraňte duplicitní slova oddělená interpunkcí buňky

Function RemoveDupes2(txt As String, Optional delim As String = " ") As String
    Dim x
    'Updateby Extendoffice
    With CreateObject("Scripting.Dictionary")
        .CompareMode = vbTextCompare
        For Each x In Split(txt, delim)
            If Trim(x) <> "" And Not .exists(Trim(x)) Then .Add Trim(x), Nothing
        Next
        If .Count > 0 Then RemoveDupes2 = Join(.keys, delim)
    End With
End Function

3. Poté tento kód uložte a zavřete, vraťte se do listu a zadejte tento vzorec = RemoveDupes2 (A2, ",") do prázdné buňky vedle vašich dat, viz screenshot:

doc-remove-duplicate-characters-1

4. Potom zkopírujte vzorec do požadovaných buněk a všechna duplicitní slova byla odstraněna ze všech buněk. Viz screenshot:

doc-remove-duplicate-characters-1

Poznámka: Ve výše uvedeném vzorci, A2 označuje buňku, kterou chcete použít, a čárka (,) znamená interpunkční znaménko, které odděluje slova v buňce, můžete ji podle potřeby změnit na jakoukoli jinou interpunkci.


Nejlepší kancelářské nástroje produktivity

Kutools pro Excel řeší většinu vašich problémů a zvyšuje vaši produktivitu o 80%

  • Opakované použití: Rychle vložte složité vzorce, grafy a cokoli, co jste dříve používali; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce bez ztráty dat; Rozdělit obsah buněk; Zkombinujte duplicitní řádky / sloupce... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Více než 300 výkonných funkcí. Podporuje Office / Excel 2007-2019 a 365. Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Kompletní funkce 30denní bezplatná zkušební verze. 60denní záruka vrácení peněz.
karta kte 201905

Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci

  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50% a omezuje stovky kliknutí myší každý den!
officetab dno
Komentáře (66)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Pořád zlomený... vlastně nic neukazuje. Zde jsou moje mobilní data: 27000,Základní,Produkty,Materiály,Z,Dřevo,Kámen,Hliněný,Suroviny,Materiály,27100,Základní,Les,Produkty,Obecné,27110,Základní,Les,Produkty,Pila,Produkty,27120 ,Les,Produkty,Dřevo,Vláknina,27200,Sklo Zjevně tam jsou nějaké podvody. Ponechá buňku prázdnou. myšlenky?
Tento komentář byl moderátorem webu minimalizován
Nevadí, jsem blbá. Protože jsem chtěl pouze tahá slova, přejmenoval jsem modul RemoveDupes, ale nezměnil jsem RemoveDupes později v kódu. Opraveno, mlátit kladivem....
Tento komentář byl moderátorem webu minimalizován
A zkombinoval jsem RemoveDupes s ConCat (dobro VBA, ne CON(I-SUCK-PROTOŽE-JÁ-MICROSOFT)CATENATE) do tohoto: =RemoveDupes(ConCat(",",G495:G502),",") takže vtáhlo to moje buňky dovnitř a pak vymazalo všechny ty podvody. Děkujeme za RemoveDupes, zde je ConCat: Funkce ConCat(Delimiter As Variant, ParamArray CellRanges() As Variant) As String Dim Cell As Range, Area As Variant If IsMissing(Delimiter) Then Delimiter = "" Pro každou oblast v CellRanges If TypeName( Area) = "Rozsah" Then For Every Cell In Area If Len(Cell.Value) Then ConCat = ConCat & Delimiter & Cell.Value Next Else ConCat = ConCat & Delimiter & Area End If Next ConCat = Mid(ConCat, Len(Delimiter) ) + 1) Ukončení funkce
Tento komentář byl moderátorem webu minimalizován
Vyzkoušel jsem vaše řešení „Odstraňte duplicitní slova oddělená interpunkcí pomocí funkce definované uživatelem“ a funguje skvěle pro více slov v buňce, ALE můj problém úplně nevyřeší. Mám jednu buňku, která má více hodnot a chci porovnat s jinou buňkou s více hodnotami, a pak nechat odstranit duplikáty, které existují mezi dvěma buňkami. Existuje způsob, jak to udělat?
Tento komentář byl moderátorem webu minimalizován
to samé pls pomozte
Tento komentář byl moderátorem webu minimalizován
je toto vlákno ještě živé? Velmi bych ocenil nějaký náhled na tuto funkci VBA.. moje otázky se týkají kódu, kde, pokud vůbec, musím dát pokyn, aby našel specifickou interpunkci jako oddělovač.. pokud bych jako oddělovač použil "@" interpunkce?
Tento komentář byl moderátorem webu minimalizován
Vaše rada je úžasná! Seřadil jsem 58,400 2 záznamů asi za 13 minuty a ušetřil jeden týden (nebo více) práce. Mým duplikátům bylo trochu těžší přeměnit tento příklad "V&O Liquid Fuel Lantern 1-2/13in blk fuel lucerna" na tuto "V&O Liquid Fuel Lantern 1-2/XNUMXin blk" děkuji.
Tento komentář byl moderátorem webu minimalizován
Dobrý den, prosím, potřebuji vaši pomoc, zkoušel jsem váš kód, ale nefungoval, možná proto, že mám čísla, mám duplicitní telefonní čísla oddělená čárkami Prosím, řekněte mi, co mám dělat Díky
Tento komentář byl moderátorem webu minimalizován
to samé pls pomozte
Tento komentář byl moderátorem webu minimalizován
BRILANTNÍ děkuji! Děkuji! Děkuji!
Tento komentář byl moderátorem webu minimalizován
Úžasné, děkuji!......
Tento komentář byl moderátorem webu minimalizován
Ahoj kámo, potřebuji tvou pomoc. Co mám dělat, když chci extrahovat duplikát? V A1 (asdfghjiklkk) Takže k je duplicitní znak Chci A2 (k), co mám dělat?
Tento komentář byl moderátorem webu minimalizován
Je možné upravit funkci, pokud existuje určité slovo, které chci ponechat duplikované, zatímco zbytek duplikován není?
Tento komentář byl moderátorem webu minimalizován
Rád bych ušetřil, moc děkuji za tento návod, ušetřilo mi to spoustu práce! :)
Tento komentář byl moderátorem webu minimalizován
To je velmi užitečné. Vyzkoušel jsem to a funguje mi to jako výjimka. Vynikající!!!!
Tento komentář byl moderátorem webu minimalizován
Toto je úžasné a jednoduché řešení k nalezení duplicitních frází v jedné buňce, mnohem snazší než některá sáhodlouhá makro řešení, která jsem našel při hledání odpovědi na můj problém, děkuji!
Tento komentář byl moderátorem webu minimalizován
Díky za tento kód – ušetřilo mi to spoustu času.
Tento komentář byl moderátorem webu minimalizován
Mám údaje jako 1. zobrazit níže v jedné buňce a chci, aby se mi líbilo 2. 1. ZERPUR,MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653, ZERPUR(16),MAHENDRAGARH, HARYANA,123029 potřebuji toto,30771237 jako :- ZERPUR,MAHENDRAGARH, HARYANA-8813073653, 123029, 30771237 Díky & S pozdravem Hanuman Singh 8813073653
Tento komentář byl moderátorem webu minimalizován
pouč mě jak? taky je potřeba to vědět..
Tento komentář byl moderátorem webu minimalizován
můžeme zjistit pozici 1. malého písmene


Zkouška - RAMSHsJHSAhsjDDD ------Chci vědět pozici 1. malého písmene podle vzorce = s
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Meharban,
Chcete-li získat pozici prvního malého písmene, můžete použít následující maticový vzorec:
=MATCH(1,IF(ABS(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))-109.5)<=12.5,1),0)
Nezapomeňte stisknout současně klávesy Ctrl + Shift + Enter.


Doufám, že vám to pomůže, děkuji!
Tento komentář byl moderátorem webu minimalizován
Ahoj skyyang

funguje to správně.....
vlastně jsem chtěl to samé..

Mnohokrát děkuji !!


Meharban singh kamarád
Tento komentář byl moderátorem webu minimalizován
Jak odstranit duplikáty odpovídajících řetězců...můžete mi pls říct


Pozdravy,
Kiran
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Kiran,
Můžete uvést příklad svého problému? Nebo můžete vložit obrázek přílohy.
Těšíme se na Vaši odpověď!
Tento komentář byl moderátorem webu minimalizován
díky moc, to mi pomůže víc. Ale chci něco konkrétního pro svůj datový soubor.
Mám dvě data sloupců. ID a informace. Ve sloupci Info se opakují ID projektu na buňku jako "Kant-, Udp-, Akr- atd.". Pro můj datový soubor je project_id více než 15 a je opraveno. Takže chci odstranit repeat_id z buňky, ale ponechat první.
Příklad: Kant-526 (0.0287),Kant-527 (0.0113),Kant-528 (0.0262) /// Kant-526 (0.0287),527 (0.0113),528 (0.0262),
Kant-543 (0.0685),Kant-544 (0.0685),Udp-097 (0.0141) /// Kant-543 (0.0685),544 (0.0685),Udp-097 (0.0141)

Ukázkový obrázek je přiložen zde. Existuje na to nějaké řešení.
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Imrane,
Omlouvám se, že jsem váš problém nevyřešil, pokud má někdo dobrý nápad, napište sem.
Děkuji!
Tento komentář byl moderátorem webu minimalizován
Mám vlastní řešení. Použil jsem zde vzorec SUBSTITUTE, ale je příliš velký pro moje data. takže to opakujte dvakrát nebo třikrát, abyste dosáhli správného výsledku.

=SUBSTITUTE(SUBSTITUTE("Kant-","",2), ("Kant-","",2)
Zde, 1. 2 pro druhého Kanta - nahrazení a pro další každé Kant - odstranění stačí přidat ("Kant-","",2) navíc. Pro mě to funguje. Ale dávám přednost dobrému VBA.
Tento komentář byl moderátorem webu minimalizován
Díky za kód.

Můžete mi prosím pomoci? Používám funkci makra k odstranění slov oddělených interpunkcí v buňce, ale moje data nejsou slova, ale fráze. Jako místo "KTE, KTO, KTW, KTO" jsou ve skutečnosti krátké popisy jako "připravit účet, zkontrolovat mé e-maily, aktualizovat smlouvy, zkontrolovat mé e-maily".

Bylo by možné aktualizovat VBA, aby se odstranily duplicitní fráze místo slov?

Mnohokrát děkuji, bude to skutečně velmi užitečné.
Tento komentář byl moderátorem webu minimalizován
Ahoj Alonso,
Chcete-li odstranit duplicitní frázi, může vám pomoci následující uživatelsky definovaná funkce, zkuste ji.

Funkce RemoveDuplicateValue(xStr jako řetězec, xDelim jako řetězec) jako řetězec
Dim xValue
If (Len(xDelim) > 0) And (Len(Trim(xStr)) > 0) Pak
S CreateObject("Scripting.Dictionary")
Pro každou xValue v rozdělení (xStr, xDelim)
If Trim(xValue) <> "" And Not .exists(Trim(xValue)) Then .Add Trim(xValue), Nothing
další
If .Count > 0 Then RemoveDuplicateValue = Join(.keys, xDelim)
Konec s
Jiný
RemoveDuplicateValue = xStr
End If
End Function

Potom použijte tento vzorec: =RemoveDuplicateValue(A2,","), změňte oddělovač na svůj vlastní.
Tento komentář byl moderátorem webu minimalizován
Ahoj skyyang,



Doufám, že získám pomoc s následující buňkou:

PR-PUERTO RICO; USA-SPOJENÉ STÁTY; USA-SPOJENÉ STÁTY

Potřebuji odstranit duplikát USA-SPOJENÉ STÁTY, protože můj nástroj pro nahrávání duplikáty neumožňuje.



Použil jsem výše uvedený VBA a nahradil jsem svůj eliminátor vzorců za ";". Způsobuje tento problém pomlčka? Vrátí #NAME? kdykoli spustím vzorec. Jsem nový v makrech/VBA, ale ujistil jsem se, že soubor byl uložen jako soubor s povoleným maker. Opravdu jsem se snažil tyto sledovat do T.


Děkuji za všechny tyto již tak skvělé informace, protože pomohly s dalším projektem, který jsem také musel dokončit, a cokoli dalšího si velmi vážím.
Tento komentář byl moderátorem webu minimalizován
Ahoj, Michaeli,
Chcete z buňky odstranit všechny duplicitní fráze a ponechat pouze ty jedinečné?
Těším se na Tvoji odpověď!
Tento komentář byl moderátorem webu minimalizován
Toto je výstup, který hledám:

Proud: PR-PUERTO RICO; USA-SPOJENÉ STÁTY; USA-SPOJENÉ STÁTY
Požadované: PR-PUERTO RICO; USA-SPOJENÉ STÁTY

Doufám, že to dává smysl a moc děkuji za rychlou odpověď.
Tento komentář byl moderátorem webu minimalizován
Ahoj, Michaeli,
Stačí použít níže uvedený kód a poté použít tento vzorec: =RemoveDuplicateValue(A2,";"). Zkuste to prosím, doufám, že vám to pomůže!

Funkce RemoveDuplicateValue(xStr jako řetězec, xDelim jako řetězec) jako řetězec
Dim xValue
If (Len(xDelim) > 0) And (Len(Trim(xStr)) > 0) Pak
S CreateObject("Scripting.Dictionary")
Pro každou xValue v rozdělení (xStr, xDelim)
If Trim(xValue) <> "" And Not .exists(Trim(xValue)) Then .Add Trim(xValue), Nothing
další
If .Count > 0 Then RemoveDuplicateValue = Join(.keys, xDelim)
Konec s
Jiný
RemoveDuplicateValue = xStr
End If
End Function
Tento komentář byl moderátorem webu minimalizován
Opravdu moc vám děkuji. Vaše odpověď byla vítanější než můj šálek kávy!
Tento komentář byl moderátorem webu minimalizován
Ahoj toto je opravdu užitečné
Ale chci odstranit celá slova za "NE TO:"

např.: NE TO: [C11bx1]

NE TO: [C11bx3] líbí
Zatím zde nejsou žádné komentáře
Načíst další
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění