Cum să eliminați duplicatele dintr-o celulă în Excel

  • Imparte Asta
Michael Brown

Există trei moduri de a găsi și de a șterge duplicatele dintr-o celulă în Excel. Alegeți-l pe cel care funcționează cel mai bine pentru dvs.

Atunci când este vorba de eliminarea valorilor sau rândurilor duplicate, Microsoft Excel oferă o serie de opțiuni diferite. Dar când vine vorba de eliminarea textului identic dintr-o anumită celulă, Excel nu oferă... nimic. Nici un instrument, nici o funcție, nici o formulă, nimic. Ne va împiedica acest lucru să ne atingem obiectivul? În nici un caz. Dacă Excel nu are funcția de care avem nevoie, să mergem să scriem propria noastră funcție :)

    Cum să eliminați cuvintele repetate în celula Excel

    Problema : Aveți aceleași cuvinte sau șiruri de text într-o celulă și doriți să eliminați a doua și toate repetițiile ulterioare.

    Soluție : o funcție personalizată definită de utilizator sau o macro VBA.

    Funcție definită de utilizator pentru a elimina dublurile dintr-o celulă

    Pentru a elimina textul duplicat dintr-o celulă, puteți utiliza următoarea funcție definită de utilizator (UDF), numită 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

    Cum să inserați codul funcției în registrul de lucru

    Pentru a adăuga codul de mai sus în Excel, trebuie să faceți următoarele:

    1. Apăsați Alt + F11 pentru a deschide editorul Visual Basic.
    2. În panoul din stânga, faceți clic dreapta pe Această carte de lucru și selectați Introduceți > Modul .
    3. Lipiți codul de mai sus în fereastra Cod fereastră.

    Pentru mai multe informații, consultați Cum să inserați cod VBA în Excel.

    Sintaxa funcției RemoveDupeWords

    Funcția noastră nou creată pentru eliminarea textului duplicat dintr-o celulă are următoarea sintaxă:

    RemoveDupeWords(text, [delimitator])

    Unde:

    • Text (obligatoriu) - un șir de caractere sau o celulă din care doriți să ștergeți textul repetat.
    • Delimitator (opțional) - delimitatorul prin care se separă textul repetat. Dacă se omite, se utilizează un spațiu ca delimitator.

    Funcția este nu ține cont de majuscule și minuscule , ceea ce înseamnă că literele minuscule și majuscule sunt tratate ca fiind aceleași caractere.

    Cum se utilizează funcția RemoveDupeWords

    Odată ce codul funcției este adăugat în registrul de lucru, îl puteți utiliza în formulele dvs. în același mod în care utilizați funcțiile încorporate în Excel.

    Pur și simplu începeți să tastați numele funcției după semnul egal, iar acesta va apărea în intellisensul formulei. Faceți dublu clic pe funcție și o veți avea inserată într-o celulă. Definiți argumentele, tastați paranteza de închidere, apăsați Enter , iar formula dvs. este finalizată.

    De exemplu, pentru a șterge cuvintele duplicate separate de o virgulă și un spațiu din A2, introduceți formula de mai jos în B2, apoi trageți-o în jos prin atâtea celule câte sunt necesare:

    =RemoveDupeWords(A2, ", ")

    Ca rezultat, veți avea o listă de cuvinte unice sau de subșiruri separate de un asterisc virgulă și spațiu :

    Dacă preferați să obțineți o listă separată prin virgulă, atunci utilizați doar o virgulă pentru delimitator:

    =RemoveDupeWords(A2, ",")

    În cazul în care datele sursă sunt separate de un spațiu , cel de-al doilea argument trebuie să fie " " sau omis:

    =RemoveDupeWords(A2)

    Ca orice altă funcție Excel, UDF-ul nostru se recalculează automat atunci când datele sursă se modifică, astfel încât rezultatele dvs. vor fi întotdeauna actualizate.

    Macro VBA pentru a șterge textul duplicat din mai multe celule deodată

    Dacă doriți să eliminați textul repetat din mai multe celule dintr-o singură dată, puteți apela la funcția RemoveDupeWords din cadrul unei macro. În acest caz, delimitatorul este codificat în mod greșit și va trebui să actualizați codul macroului de fiecare dată când se schimbă delimitatorul. Alternativ, puteți scrie câteva variante de cod pentru cei mai comuni delimitatori, de exemplu, un spațiu, o virgulă sau o virgulă și un spațiu, și să dați macrourilor dvs. nume semnificative, de ex. RemoveDupesDelimSpace .

    Codul macro este următorul:

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

    În codul de mai sus, delimitatorul este un virgulă și spațiu Pentru a utiliza un alt delimitator, înlocuiți ", " cu un alt caracter (caractere) în această linie de cod:

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

    Notă: Pentru ca macroul să funcționeze, codul său și codul funcției RemoveDupeWords trebuie să fie plasate în același modul.

    Cum se utilizează macroul

    Introduceți codul macro în propriul registru de lucru sau deschideți registrul nostru de lucru de probă cu codul, apoi efectuați următorii pași pentru a executa macroul.

    1. Selectați un interval de celule din care doriți să eliminați textul repetat.
    2. Apăsați Alt + F8 pentru a deschide fereastra Macro caseta de dialog.
    3. În lista de macrocomenzi, selectați RemoveDupeWords2 .
    4. Faceți clic pe Rulați .

    Pentru mai multe detalii, consultați Cum se execută o macro în Excel.

    Notă. Deoarece acțiunea unei macro nu poate fi anulată , vă recomandăm cu tărie să salvați registrul de lucru chiar înainte de a utiliza macroul. În acest fel, dacă ceva nu merge bine, puteți pur și simplu să închideți și să redeschideți registrul de lucru și vă veți întoarce exact acolo unde ați fost. Sau puteți face o copie a foii (foilor) de lucru care ar putea fi afectate de macro.

    Cum să eliminați caracterele duplicate într-o celulă

    Problema : Aveți mai multe apariții ale aceluiași caracter într-o celulă, în timp ce fiecare celulă ar trebui să conțină doar o singură apariție a unui anumit caracter.

    Soluție : o funcție personalizată definită de utilizator sau o macro VBA.

    Funcție definită de utilizator pentru ștergerea caracterelor repetate

    Pentru a elimina caracterele duplicate dintr-o celulă, păstrând doar primele apariții, puteți utiliza următoarea funcție definită de utilizator, numită 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

    Pentru a insera codul funcției în registrul de lucru, pașii sunt exact aceiași ca în exemplul anterior.

    Sintaxa funcției RemoveDupeChars

    Sintaxa acestei funcții personalizate este cât se poate de simplă - este necesar doar un singur argument:

    RemoveDupeChars(text)

    Unde text este un șir de caractere sau o celulă din care doriți să eliminați caracterele duplicate.

    Funcția este Sensibil la majuscule și minuscule și tratează literele minuscule și majuscule ca fiind caractere diferite.

    Cum se utilizează funcția RemoveDupeChars

    Tot ceea ce am spus despre utilizarea RemoveDupeWords este valabil pentru RemoveDupeChars Așadar, fără a intra prea mult în teorie, să trecem direct la un exemplu.

    Pentru a șterge caracterele duplicate din coloana A începând cu A2, introduceți această formulă în B2 și copiați-o în jos:

    =RemoveDupeChars(A2)

    După cum puteți vedea în imaginea de mai jos, funcția gestionează cu succes diferite tipuri de caractere, inclusiv litere, cifre și simboluri speciale:

    Sfat: Dacă personajele tale sunt separate între ele de o anumită delimitator cum ar fi un spațiu, o virgulă sau o cratimă, apoi utilizați RemoveDupeWords așa cum se arată în exemplul anterior.

    Macro VBA pentru a elimina aceleași caractere dintr-o celulă

    Ca RemoveDupeWords , a RemoveDupeChars poate fi, de asemenea, apelată din interiorul unui macro:

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

    Deoarece acest UDF nu utilizează niciun delimitator, nu va trebui să faceți nicio ajustare în cod.

    Notă. Pentru ca macroul să funcționeze, codul său și codul UDF RemoveDupeChars trebuie să fie plasate în același modul în editorul VBA.

    Cum se utilizează macroul

    Presupunând că ați inserat deja codul macro în registrul de lucru sau ați deschis registrul nostru de lucru de probă care conține codul, lansați macroul în felul următor.

    1. Selectați un interval de celule din care doriți să eliminați caracterele repetate.
    2. Apăsați Alt + F8 pentru a deschide fereastra Macro caseta de dialog.
    3. În lista de macrocomenzi, selectați RemoveDupeChars2 .
    4. Faceți clic pe Rulați .

    Îndepărtați subșirurile duplicate cu Ultimate Suite

    La începutul acestui tutorial, s-a menționat că Microsoft Excel nu are o funcție încorporată pentru eliminarea duplicatelor dintr-o celulă. Dar suita noastră Ultimate Suite are!

    Îl puteți găsi în secțiunea Eliminarea duplicatelor din meniul derulant de la Date Ablebits în fila Dedupare În cazul în care grupul Îndepărtați subșirurile duplicate nu apare în Excel, asigurați-vă că aveți instalată cea mai recentă versiune de Ultimate Suite (o versiune de încercare gratuită poate fi descărcată de aici).

    Pentru a elimina cuvinte sau text repetat din mai multe celule în 5 secunde (o secundă pe etapă:), iată ce trebuie să faceți:

    1. Selectați datele sursă și lansați aplicația Îndepărtați subșirurile duplicate instrument.
    2. Specificați delimitator .
    3. Definiți dacă trebuie să tratați delimitatori consecutivi ca unul (implicit).
    4. Alegeți dacă doriți să efectuați Sensibil la majuscule și minuscule sau nu ține cont de majuscule și minuscule căutare.
    5. Faceți clic pe Eliminați .

    Gata! Nu trebuie să vă chinuiți cu VBA sau formule, ci doar să obțineți rezultate rapide și precise.

    Pentru a afla mai multe despre acest minunat add-in, vă rugăm să vizitați pagina sa de pornire sau, chiar mai bine, descărcați o versiune de evaluare de mai jos și încercați-o!

    Iată cum se elimină textul duplicat dintr-o celulă. Vă mulțumesc pentru lectură și sper să ne vedem pe blog săptămâna viitoare!

    Descărcări disponibile

    Exemple de eliminare a duplicatelor din celule (fișier .xlsm)

    Ultimate Suite 14-day full-functional version (fișier .exe)

    Michael Brown este un pasionat de tehnologie dedicat, cu o pasiune pentru simplificarea proceselor complexe folosind instrumente software. Cu mai mult de un deceniu de experiență în industria tehnologiei, el și-a perfecționat abilitățile în Microsoft Excel și Outlook, precum și în Google Sheets și Docs. Blogul lui Michael este dedicat împărtășirii cunoștințelor și experienței sale cu alții, oferind sfaturi și tutoriale ușor de urmat pentru îmbunătățirea productivității și eficienței. Indiferent dacă sunteți un profesionist experimentat sau un începător, blogul lui Michael oferă informații valoroase și sfaturi practice pentru a profita la maximum de aceste instrumente software esențiale.