Come evidenziare i valori duplicati con vba?

Quando si lavora con dati di grandi dimensioni, i valori duplicati sono sempre un problema. La maggior parte delle volte utilizzo l’opzione Rimuovi duplicati per rimuovere tutti questi valori. E sono sicuro che anche tu fai la stessa cosa.

Ma rimuovere questi valori duplicati o semplicemente contarli non risolve mai il problema. L’importante è esaminare tutti i valori duplicati prima di rimuoverli.

Si è vero. Una volta evidenziati tutti questi valori, è possibile verificarli e quindi eliminarli. Oggi in questo articolo vorrei condividere con voi 4 diversi codici VBA per evidenziare i valori duplicati.

E il fatto è che questi codici possono evidenziare le celle in diversi modi. Puoi semplicemente copiarli e incollarli nel tuo editor VBA e usarli.

1. In ogni riga

Questo codice VBA controlla tutte le celle di una riga ed evidenzia tutte le celle duplicate in una riga. In termini semplici, se una riga ha due volte il valore “522”, verrà considerata un duplicato. Ma se gli altri 522 si trovano in un’altra riga, saranno considerati unici.

evidenzia i valori duplicati di ogni riga utilizzando il codice VBA
 Sub DuplicateValuesFromRow() 'Declare All Variables. Dim myCell As Range Dim myRow As Integer Dim myRange As Range Dim myCol As Integer Dim i As Integer 'Count Number of Rows and Columns myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count 'Loop Each Row To Check Duplicate Values and Highlight cells. For i = 2 To myRow Set myRange = Range(Cells(i, 2), Cells(i, myCol)) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next Next End Sub

Se guardi questa macro, vedrai che abbiamo utilizzato un ciclo per verificare la presenza di valori duplicati in ogni riga e evidenziarli con un colore.

Punti importanti

  1. I tuoi dati non devono contenere una riga o una colonna vuota, altrimenti ignora quella cella.
  2. La cella iniziale per i tuoi dati dovrebbe essere la cella “A1”. E se vuoi modificare il punto di partenza, devi modificare il codice.
  3. La prima riga e la prima colonna del foglio dati devono essere intestazioni.

2. In ogni colonna

Questo codice VBA controlla tutte le celle in una colonna ed evidenzia tutte le celle duplicate in ciascuna colonna. In termini semplici, se una colonna ha due volte il valore “231”, verrà considerata un duplicato. Ma se un altro “231” si trova in un’altra colonna, sarà considerato unico.

evidenziare i valori duplicati di ciascuna colonna utilizzando il codice VBA
 Sub DuplicateValuesFromColumns() 'Declare All Variables Dim myCell As Range Dim myRow As Integer Dim myRange As Range Dim myCol As Integer Dim i As Integer 'Count number of rows & column myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count 'Loop each column to check duplicate values & highlight them. For i = 2 To myRow Set myRange = Range(Cells(2, i), Cells(myRow, i)) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next Next End Sub

3. Nella selezione

Supponiamo che tu voglia semplicemente evidenziare le celle con valori duplicati dalla selezione, questo codice può aiutarti. Per utilizzare questo codice, seleziona semplicemente un intervallo di celle ed esegui questo codice. Controlla ogni cella con la selezione e la evidenzia in rosso se una cella ha un valore duplicato.

evidenziare i valori duplicati dalla selezione utilizzando il codice VBA
 Sub DuplicateValuesFromSelection() Dim myRange As Range Dim i As Integer Dim j As Integer Dim myCell As Range Set myRange = Selection For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next End Sub

4. Dati interi

Se disponi di un set di dati di grandi dimensioni, puoi utilizzare questo codice macro per verificare la completezza dei dati ed evidenziare i valori duplicati. Questo codice attraversa ciascuna cella una per una e applica il colore rosso a tutte le celle duplicate.

 Sub DuplicateValuesFromTable() Dim myRange As Range Dim i As Integer Dim j As Integer Dim myCell As Range Set myRange = Range(“Table1”) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next End Sub

Nota importante: nel codice sopra abbiamo utilizzato il nome della tabella “Table1”, puoi modificare questo nome dal codice. Ora, se hai un intervallo, puoi semplicemente utilizzare il nome dell’intervallo.

[Suggerimento bonus] Conta i valori duplicati

Questo codice ti aiuta a contare il numero di valori duplicati dalla selezione. Quando esegui questo codice, restituisce una finestra di messaggio che mostra il numero.

 Sub CountDuplicates() Dim i As Integer Dim j As Integer Dim myCell As Range Dim myRange As Integer myRange = Range("Table1").Count j = 0 For Each myCell In Range("Table1") If WorksheetFunction.CountIf(Range("Table1"), myCell.Value) > 1 Then j = j + 1 End If Next MsgBox j End Sub

Anche in questo caso nel codice sopra abbiamo utilizzato il nome di una tabella e tu puoi modificarlo o sostituirlo con un intervallo.

File di esempio

Scarica questo file di esempio qui per saperne di più.

Conclusione

In diverse situazioni, dobbiamo verificare la presenza di valori duplicati in modi diversi. E tutti i codici sopra riportati possono esserti utili a questo proposito. Se lo desideri, puoi modificare il colore dell’evidenziazione dai codici utilizzando il numero dell’indice dei colori.

Adesso aiutami con una cosa.

Dove possiamo migliorare questi codici?

Per favore condividi i tuoi pensieri con me nella sezione commenti, mi piacerebbe sentire la tua opinione. E non dimenticare di condividere questo suggerimento con i tuoi amici.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *