Come evidenziare testo/parole duplicate in una cella di Excel

  • Condividi Questo
Michael Brown

L'esercitazione mostra come evidenziare parole o stringhe di testo duplicate all'interno di una cella utilizzando VBA.

La formattazione condizionale di Excel consente di evidenziare i duplicati in tutti i modi possibili: con o senza la prima occorrenza, in una singola colonna o in più colonne, celle duplicate consecutive e intere righe basate su valori identici in una colonna chiave. Ma, come al solito, c'è un "ma". Le regole di formattazione condizionale funzionano a livello di cella, mentre è possibile che si vogliano evidenziare duplicatiQuesto può essere fatto solo con le macro. Anche se non avete esperienza con VBA, non abbiate fretta di chiudere questa pagina: qui troverete esempi di codice pronti all'uso e istruzioni dettagliate su come utilizzarli nei vostri fogli di lavoro.

    Evidenzia le parole duplicate in una cella ignorando le maiuscole del testo

    Questo esempio mostra come ombreggiare le parole o le stringhe di testo duplicate all'interno di una cella con un colore di carattere rosso, come mostrato nell'immagine seguente. Si noti che le lettere minuscole e maiuscole vengono trattate come gli stessi caratteri. Ad esempio, arancione , ARANCIONE e Arancione sono considerati la stessa parola.

    Il codice della macro è il seguente:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Inserisci il delimitatore che separa i valori in una cella" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False ) Next End Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive AsBoolean = True ) Dim text As String Dim words() As String Dim word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = da LBound (words) a UBound (words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word =words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount> 0 Then text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End Sub

    Evidenzia il testo duplicato in una cella senza distinzione tra maiuscole e minuscole

    Nella maggior parte dei casi si tende a ignorare le maiuscole e minuscole quando si lavora con voci di testo in Excel. In alcune circostanze, tuttavia, le maiuscole e minuscole sono importanti. Ad esempio, se si ha a che fare con ID, password o altri record di questo tipo, le stringhe come 1-AA , 1-aa e 1-Aa non sono duplicati e non devono essere evidenziati:

    In questo caso, utilizzare la seguente versione del codice:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Inserisci il delimitatore che separa i valori in una cella" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) Next Sub End Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive AsBoolean = True ) Dim text As String Dim words() As String Dim word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = da LBound (words) a UBound (words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word =words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount> 0 Then text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End Sub

    Come utilizzare le macro per evidenziare le parole duplicate in Excel

    Se siete principianti nell'uso di VBA, le seguenti istruzioni passo-passo vi guideranno comodamente. Gli utenti esperti possono semplicemente scegliere il link per il download e saltare il resto :)

    Aggiungere il codice alla cartella di lavoro

    Si inizia inserendo il codice della macro nella cartella di lavoro di Excel. Ecco come fare:

    1. Aprire la cartella di lavoro in cui si desidera evidenziare i doppioni.
    2. Premere Alt + F11 per aprire l'editor di Visual Basic.
    3. Nel riquadro di sinistra, fare clic con il pulsante destro del mouse su Questo libro di lavoro e selezionare Inserire > Modulo dal menu contestuale.
    4. Incollare il codice nella finestra Codice.
    5. Per conservare la macro per un uso futuro, assicurarsi di salvare la cartella di lavoro come file .xlsm abilitato alle macro.

    In alternativa, è possibile scaricare la cartella di lavoro di esempio ed eseguire la macro da lì. La cartella di lavoro di esempio contiene le seguenti macro:

    • EvidenziaDupesCaseInsensitive - sfuma i duplicati all'interno di una cella ignorando le maiuscole e le minuscole.
    • EvidenziaDupesCaseSensitive - evidenzia i doppioni in una cella tenendo conto delle lettere maiuscole e minuscole.

    Per ulteriori informazioni, vedere Come inserire il codice VBA in Excel.

    Eseguire la macro

    Con il codice aggiunto alla propria cartella di lavoro o con il nostro file di esempio scaricato e aperto, eseguire la macro in questo modo:

    1. Nel foglio di lavoro, selezionare le celle in cui si desidera evidenziare il testo duplicato. Può trattarsi di un intervallo o di più intervalli non adiacenti.
    2. Premere Alt + F8 .
    3. Selezionare la macro di interesse e fare clic su Correre .

    4. La macro chiederà di specificare il delimitatore che separa i valori nelle celle selezionate. Il delimitatore preimpostato (una virgola e uno spazio nel nostro caso) apparirà automaticamente nella casella di immissione. A seconda delle esigenze, è possibile lasciare il delimitatore predefinito o digitarne uno diverso, quindi fare clic su OK.

    Un attimo dopo, tutte le stringhe duplicate nelle celle selezionate saranno ombreggiate di rosso (o del colore del carattere impostato nel codice).

    Suggerimento: per velocizzare rimuovere i duplicati all'interno di una cella, è possibile utilizzare Rimuovi sottostringhe duplicate, uno dei tanti strumenti per risparmiare tempo inclusi nella Suite Ultimate.

    Come adattare il codice alle proprie esigenze

    Con queste note d'uso e una conoscenza di base di VBA (o semplicemente seguendo attentamente le istruzioni riportate di seguito), potete facilmente modificare i codici in base alle vostre esigenze.

    Posizionare sullo stesso modulo

    Come si può notare, entrambe le macro ( EvidenziaDupesCaseSensitive e EvidenziaDupesCaseInsensitive ) chiamare il Evidenziazione delle parole nella cella La differenza tra le due macro è solo nel terzo parametro (CaseSensitive) passato alla funzione.

    Per la ricerca sensibile alle maiuscole e alle minuscole, è impostato su VERO:

    Richiamare EvidenziazioneParoleInCella(Cella, Delimitatore, Vero)

    Per la ricerca senza distinzione tra maiuscole e minuscole, è impostato su FALSE:

    Richiamare HighlightDupeWordsInCell(Cell, Delimiter, False)

    Affinché le macro funzionino, il codice del file Evidenziazione delle parole nella cella deve essere inserita nello stesso modulo delle macro.

    Delimitatore

    Quando viene eseguita, la macro chiede di specificare il delimitatore che separa le parole/stringhe nelle celle selezionate. Il delimitatore predefinito è una virgola e uno spazio (", ") ed è preimpostato nella casella di input:

    Delimitatore = InputBox("Specificare il delimitatore che separa i valori in una cella", "Delimitatore", ", ")

    Nel codice si può usare qualsiasi altro carattere come delimitatore predefinito.

    Colore

    Per impostazione predefinita, l'opzione Evidenziazione delle parole nella cella La funzione ombreggia i duplicati con il colore rosso dei caratteri. Il colore è definito in questa riga:

    Cell.Characters(positionInText, Len(word)).Font.Color = vbRed

    In questo caso, vbRed è una sorta di costante di colore VBA. Per visualizzare i duplicati in un colore diverso, è possibile sostituire vbRed con un'altra costante come vbGreen o vbYellow, vbBlue, ecc. T elenco delle costanti di colore supportate è disponibile qui.

    Ecco come evidenziare le parole duplicate nelle celle di Excel. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!

    Download disponibili

    Esempi di codice per evidenziare i duplicati in una cella (file .xlsm)

    Ultimate Suite 14 giorni versione completamente funzionale (file .exe)

    Michael Brown è un appassionato di tecnologia dedicato con una passione per la semplificazione di processi complessi utilizzando strumenti software. Con oltre un decennio di esperienza nel settore tecnologico, ha affinato le sue competenze in Microsoft Excel e Outlook, nonché in Fogli Google e Documenti. Il blog di Michael è dedicato alla condivisione delle sue conoscenze e competenze con gli altri, fornendo suggerimenti e tutorial facili da seguire per migliorare la produttività e l'efficienza. Che tu sia un professionista esperto o un principiante, il blog di Michael offre spunti preziosi e consigli pratici per ottenere il massimo da questi strumenti software essenziali.