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

Come rimuovere caratteri o parole duplicati nella stringa di una cella?

Supponendo che ci siano caratteri o parole duplicati in ogni cella e si desidera rimuovere i duplicati e lasciare solo caratteri o parole univoci. Come hai potuto risolvere questo problema in Excel?

Rimuovi i caratteri duplicati della stringa di testo con la funzione definita dall'utente

Rimuovi le parole duplicate separate dalla punteggiatura con la funzione definita dall'utente


freccia blu freccia destra Rimuovi i caratteri duplicati della stringa di testo con la funzione definita dall'utente

Se si dispone di un elenco di stringhe di testo, ora è necessario rimuovere i caratteri duplicati come mostrato nella seguente schermata. Qui posso parlare di un codice VBA per affrontarlo.

doc-rimuovi-caratteri-duplicati-1

1. Tieni premuto il ALT + F11 chiavi per aprire il Finestra di Microsoft Visual Basic, Applications Edition.

2. Clic inserire > Moduloe incolla il codice seguente nel file Finestra del modulo.

Codice VBA: rimuove i caratteri duplicati della stringa di testo in una cella

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. Quindi salva e chiudi questo codice, torna al foglio di lavoro e inserisci questa formula = removedupes1 (A2) (A2 è la cella di dati da cui vuoi rimuovere i duplicati) in una cella vuota oltre ai tuoi dati, vedi screenshot:

doc-rimuovi-caratteri-duplicati-1

4. Quindi trascina il quadratino di riempimento sulle celle dell'intervallo in cui desideri applicare questa formula, tutti i caratteri duplicati sono stati rimossi immediatamente da ogni cella.

doc-rimuovi-caratteri-duplicati-1


freccia blu freccia destra Rimuovi le parole duplicate separate dalla punteggiatura con la funzione definita dall'utente

Se in una cella ci sono alcune parole separate da determinati segni di punteggiatura, puoi anche rimuovere le parole duplicate come preferisci. Si prega di fare con i seguenti passaggi:

1. Tenere premuto il tasto ALT + F11 chiavi per aprire il Finestra di Microsoft Visual Basic, Applications Edition.

2. Clic inserire > Moduloe incolla il codice seguente nel file Finestra del modulo.

Codice VBA: rimuove le parole duplicate separate dalla punteggiatura di una cella

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. Quindi salva e chiudi questo codice, torna al foglio di lavoro e inserisci questa formula = RemoveDupes2 (A2, ",") in una cella vuota accanto ai tuoi dati, vedi screenshot:

doc-rimuovi-caratteri-duplicati-1

4. Quindi copia la formula nelle celle necessarie e tutte le parole duplicate sono state rimosse da ogni cella. Vedi screenshot:

doc-rimuovi-caratteri-duplicati-1

Note:: Nella formula sopra, A2 indica la cella che desideri utilizzare e la virgola (,) sta per il segno di punteggiatura che separa le parole in una cella, puoi cambiarlo con qualsiasi altra punteggiatura secondo le tue necessità.


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
fondo officetab
Commenti (66)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Ancora al verde... in realtà non mostra nulla. Ecco i dati della mia cella: 27000,Base,Prodotti,Materiali,Da,Legno,Pietra,Terra,Grezzo,Materiali,27100,Base,Foresta,Prodotti,Generale,27110,Base,Foresta,Prodotti,Segheria,Prodotti,27120,Base ,Foresta,Prodotti,Legno,Pulp,27200,Vetro Ci sono chiaramente degli inganni. Lascia la cella vuota. Pensieri?
Questo commento è stato fatto dal moderatore sul sito
Non importa, sono stupido. Poiché volevo solo estrarre le parole, ho rinominato il modulo RemoveDupes, ma non ho modificato RemoveDupes più avanti nel codice. Risolto, schiaffeggiandosi con il martello....
Questo commento è stato fatto dal moderatore sul sito
E ho combinato RemoveDupes con ConCat (la bontà VBA, non CON(I-SUCK-BECAUSE-I'M-MICROSOFT)CATENATE) in questo: =RemoveDupes(ConCat(",",G495:G502),",") così ha tirato dentro le mie cellule e poi ha cancellato tutti i duplicati. Grazie per RemoveDupes, ecco ConCat: Function ConCat(Delimiter As Variant, ParamArray CellRanges() As Variant) As String Dim Cell As Range, Area As Variant If IsMissing(Delimiter) Then Delimiter = "" For Each Area In CellRanges If TypeName( Area) = "Intervallo" Quindi per ogni cella nell'area Se Len(Cell.Value) Then ConCat = ConCat & Delimiter & Cell.Value Next Else ConCat = ConCat & Delimiter & Area End If Next ConCat = Mid(ConCat, Len(Delimiter ) + 1) Funzione finale
Questo commento è stato fatto dal moderatore sul sito
Ho provato la tua soluzione "Rimuovi le parole duplicate separate dalla punteggiatura con la funzione definita dall'utente" e funziona benissimo per più parole in una cella MA non risolve completamente il mio problema. Ho una cella che ha più valori e voglio confrontarla con un'altra cella con più valori e quindi rimuovere i duplicati esistenti tra le due celle. C'è un modo per farlo?
Questo commento è stato fatto dal moderatore sul sito
lo stesso qui per favore aiuto
Questo commento è stato fatto dal moderatore sul sito
questo thread è ancora vivo? Apprezzerei molto qualche intuizione con questa funzione VBA .. le mie domande hanno a che fare con il codice, dove, se necessario, devo istruirlo per trovare la punteggiatura specifica come delimitatore .. se dovessi usare "@" come la punteggiatura?
Questo commento è stato fatto dal moderatore sul sito
Il tuo consiglio è fantastico! Ho ordinato 58,400 record in circa 2 minuti e ho salvato una settimana (o più) di lavoro. I miei duplicati sono stati un po' più difficili per trasformare questo esempio "V&O Liquid Fuel Lantern 13-1/2in blk fuel lantern" in questo "V&O Liquid Fuel Lantern 13-1/2in blk" grazie.
Questo commento è stato fatto dal moderatore sul sito
Ciao, per favore ho bisogno del tuo aiuto, ho provato il tuo codice ma non ha funzionato, forse perché ho numeri ho numeri di telefono duplicati separati da virgole Per favore dimmi cosa fare Grazie
Questo commento è stato fatto dal moderatore sul sito
lo stesso qui per favore aiuto
Questo commento è stato fatto dal moderatore sul sito
BRILLANTE grazie! grazie! grazie!
Questo commento è stato fatto dal moderatore sul sito
Fantastico grazie!.....
Questo commento è stato fatto dal moderatore sul sito
Amico, ho bisogno del tuo aiuto. Cosa devo fare se voglio estrarre il duplicato? In A1 (asdfghjiklkk) Quindi k è un carattere duplicato Voglio A2 (k) cosa devo fare?
Questo commento è stato fatto dal moderatore sul sito
È possibile regolare la funzione se c'è una determinata parola che voglio mantenere duplicata mentre il resto non è duplicato?
Questo commento è stato fatto dal moderatore sul sito
Proprio come per risparmiare, grazie mille per questa guida, mi ha risparmiato un sacco di lavoro! :)
Questo commento è stato fatto dal moderatore sul sito
Questo è molto utile. L'ho provato e funziona per me come escluso. Eccellente !!!!
Questo commento è stato fatto dal moderatore sul sito
Questa è una soluzione fantastica e semplice per trovare frasi duplicate all'interno di una singola cella, molto più semplice di alcune delle soluzioni macro prolisse che ho trovato mentre cercavo una risposta al mio problema, grazie!
Questo commento è stato fatto dal moderatore sul sito
Grazie per questo codice: mi ha fatto risparmiare un sacco di tempo.
Questo commento è stato fatto dal moderatore sul sito
Ho dati come 1. mostra sotto in una singola cella e voglio che mi piaccia 2. 1. ZERPUR, MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653, ZERPUR(16), MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653 Ne ho bisogno come: - ZERPUR, MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653 Grazie e saluti Hanuman Singh 9034509168
Questo commento è stato fatto dal moderatore sul sito
insegnami come? devi saperlo anche tu..
Questo commento è stato fatto dal moderatore sul sito
possiamo scoprire la posizione della prima lettera minuscola


Esame - RAMSHsJHSAhsjDDD ------Voglio conoscere la posizione della prima lettera minuscola per formula = s
Questo commento è stato fatto dal moderatore sul sito
Ciao, Meharban,
È possibile applicare la seguente formula di matrice per ottenere la posizione della prima lettera minuscola:
=MATCH(1,IF(ABS(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))-109.5)<=12.5,1),0)
Ricorda di premere insieme i tasti Ctrl + Maiusc + Invio.


Spero che possa aiutarti, grazie!
Questo commento è stato fatto dal moderatore sul sito
Ciao skyyang

funziona correttamente.....
in effetti volevo la stessa cosa..

grazie molto !!


Meharban Singh amico
Questo commento è stato fatto dal moderatore sul sito
Come rimuovere i duplicati di stringhe corrispondenti ... puoi dirmelo


Saluti,
Kiran
Questo commento è stato fatto dal moderatore sul sito
Ciao, Kiran,
Puoi fare un esempio del tuo problema? Oppure puoi inserire un'immagine in allegato.
Attendo con impazienza la tua risposta!
Questo commento è stato fatto dal moderatore sul sito
grazie mille, mi aiuta di più. Ma voglio qualcosa di più specifico per il mio set di dati.
Ho due dati di colonne. ID e informazioni. Nella colonna delle informazioni, vengono ripetuti gli ID progetto per cella come "Kant-, Udp-, Akr- ecc.". Per il mio set di dati, project_id è più di 15 ed è stato risolto. Quindi voglio eliminare il repeat_id dalla cella ma mantenere il primo.
Esempio: 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)

L'immagine di esempio è allegata qui. C'è qualche soluzione per questo.
Questo commento è stato fatto dal moderatore sul sito
Ciao, Imran,
Ci scusiamo per non aver risolto il tuo problema, se qualcuno ha la buona idea, si prega di commentare qui.
.
Questo commento è stato fatto dal moderatore sul sito
Ho una soluzione da solo. Ho usato la formula SUBSTITUTE qui, ma è troppo grande per i miei dati. quindi ripetilo due o tre volte per ottenere il risultato corretto.

=SOSTITUZIONE(SOSTITUZIONE("Kant-","",2), ("Kant-","",2)
Qui, 1° 2 per la seconda sostituzione di Kant e per la successiva rimozione di ogni Kant basta aggiungere ("Kant-","",2) extra. Sta funzionando per me. Ma preferisco un buon VBA.
Questo commento è stato fatto dal moderatore sul sito
Grazie per il codice.

Potete per favore aiutarmi? Sto usando la funzione macro per rimuovere le parole separate dalla punteggiatura di una cella, tuttavia i miei dati non sono parole, ma in realtà frasi. Come invece di "KTE, KTO, KTW, KTO" sono in realtà brevi descrizioni come "preparare una fattura, rivedere le mie e-mail, aggiornare i contratti, rivedere le mie e-mail".

Sarebbe possibile aggiornare il VBA per rimuovere le frasi duplicate anziché le parole?

Molte grazie, questo sarà davvero molto utile.
Questo commento è stato fatto dal moderatore sul sito
Ciao, Alonso,
Per rimuovere la frase duplicata, la seguente funzione definita dall'utente potrebbe aiutarti, per favore provala.

Funzione RemoveDuplicateValue(xStr As String, xDelim As String) As String
Valore x attenuato
Se (Len(xDelim) > 0) e (Len(Trim(xStr)) > 0) Allora
Con CreateObject ("Scripting.Dictionary")
Per ogni xValue in Split(xStr, xDelim)
Se Trim(xValue) <> "" And Not .exists(Trim(xValue)) Then .Add Trim(xValue), Nothing
Successiva
Se .Count > 0, quindi RemoveDuplicateValue = Join(.keys, xDelim)
Fine Con
Altro
RemoveDuplicateValue = xStr
End If
End Function

Quindi applica questa formula: =RemoveDuplicateValue(A2,","), cambia il separatore , al tuo.
Questo commento è stato fatto dal moderatore sul sito
Ciao skyyang,



Spero di ricevere aiuto con il seguente cell:

PR-PORTORICCO; USA-STATI UNITI; USA-STATI UNITI

Ho bisogno che il duplicato USA-STATI UNITI venga rimosso poiché il mio strumento di caricamento non consentirà duplicati.



Ho usato il VBA sopra e ho sostituito il mio delimitatore di formula con ";". Il trattino causa un problema? Restituisce #NOME? ogni volta che eseguo la formula. Sono nuovo di macro/VBA ma mi sono assicurato che il file fosse salvato come file abilitato per macro. Ho davvero cercato di seguire questi fino al T.


Grazie per tutte queste già ottime informazioni in quanto hanno aiutato anche con un altro progetto che ho dovuto completare e qualsiasi altra cosa aggiuntiva è molto apprezzata.
Questo commento è stato fatto dal moderatore sul sito
Ciao, Michele,
Intendi rimuovere tutte le frasi duplicate da una cella e lasciare solo quelle uniche?
Rimango in attesa di una sua risposta!
Questo commento è stato fatto dal moderatore sul sito
Questo è l'output che cerco:

Attuale: PR-PUERTO RICO; USA-STATI UNITI; USA-STATI UNITI
Desiderato: PR-PUERTO RICO; USA-STATI UNITI

Spero che questo abbia senso e grazie mille per la rapida risposta.
Questo commento è stato fatto dal moderatore sul sito
Ciao, Michele,
Devi solo applicare il codice seguente e quindi utilizzare questa formula: =RemoveDuplicateValue(A2,";"). Per favore, prova, spero che possa aiutarti!

Funzione RemoveDuplicateValue(xStr As String, xDelim As String) As String
Valore x attenuato
Se (Len(xDelim) > 0) e (Len(Trim(xStr)) > 0) Allora
Con CreateObject ("Scripting.Dictionary")
Per ogni xValue in Split(xStr, xDelim)
Se Trim(xValue) <> "" And Not .exists(Trim(xValue)) Then .Add Trim(xValue), Nothing
Successiva
Se .Count > 0, quindi RemoveDuplicateValue = Join(.keys, xDelim)
Fine Con
Altro
RemoveDuplicateValue = xStr
End If
End Function
Questo commento è stato fatto dal moderatore sul sito
Grazie mille. La tua risposta è stata più gradita della mia tazza di caffè!
Questo commento è stato fatto dal moderatore sul sito
Ciao, questo è davvero utile
Ma voglio rimuovere intere parole dopo "NO TO:"

es: NO A: [C11bx1]

NO A: [C11bx3] così
Non ci sono ancora commenti pubblicati qui
Carica Altre
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL