Tutti incontrano la necessità, prima o poi, di eliminare voci duplicate da un elenco di voci di testo. Supponiamo di avere i valori di testo nella colonna A di un foglio di lavoro e che vengano eseguiti per circa 500 righe. Se desideri eliminare qualsiasi duplicato nell’elenco, potresti cercare il modo più semplice per farlo. Esistono in realtà diversi modi per eseguire questa attività in Excel.

Utilizzo dello strumento Elimina duplicati

Forse il metodo più semplice è selezionare i dati da cui si desidera eliminare i duplicati e quindi visualizzare la scheda Dati della barra multifunzione. Fare clic sullo strumento Rimuovi duplicati, nel gruppo Strumenti dati. Excel visualizza la finestra di dialogo Rimuovi duplicati.

La cosa grandiosa della finestra di dialogo Rimuovi duplicati è che elenca i nomi di ogni colonna nei tuoi dati. (Lo strumento presume che tu abbia etichette di intestazione nella prima riga dei tuoi dati.) Puoi quindi assicurarti che ci sia un segno di spunta accanto a ogni colonna che desideri controllare per i duplicati. Quando fai clic sul pulsante OK, i tuoi dati vengono analizzati e le righe duplicate rimosse. (Anche in questo caso, i duplicati vengono determinati in base alle colonne selezionate nella finestra di dialogo Rimuovi duplicati.)

Utilizzo del filtro dati

Un altro metodo manuale consiste nell’utilizzare il filtro dei dati per determinare i valori univoci. Assicurati che la colonna abbia un’etichetta nella parte superiore, quindi seleziona una cella nella colonna. Visualizzare la scheda Dati della barra multifunzione e fare clic su Avanzate nel gruppo Ordina e filtra. Utilizzare i controlli nella finestra di dialogo risultante per specificare che si desidera copiare i valori univoci in un’altra posizione specificata.

Usare una formula

È inoltre possibile utilizzare una formula per determinare manualmente i duplicati nell’elenco. Ordina i valori nella colonna e quindi inserisci la seguente formula nella cella B2:

=IF(A2=A1,"Duplicate","")

Copia la formula in tutte le celle nella colonna B che hanno un valore corrispondente nella colonna A. Seleziona tutti i valori nella colonna B e premi Ctrl + C. Usa Incolla speciale per incollare solo i valori nelle stesse celle selezionate. Ora hai convertito le formule nei loro risultati.

Ordina le due colonne in base al contenuto della colonna B e tutte le righe duplicate saranno in un’area. Elimina queste righe e avrai il tuo elenco completo di valori univoci.

Utilizzo di una macro

Gli approcci manuali sono rapidi e facili, ma se devi eliminare regolarmente i valori duplicati da una colonna, una macro potrebbe essere più il tuo stile.

La seguente macro si basa sul filtraggio dei dati, proprio come il precedente metodo manuale:

Sub CreateUniqueList()

Dim rData As Range     Dim rTemp As Range

Set rData = Range(Range("a1"), Range("A1048576").End(xlUp))

rData.EntireColumn.Insert     Set rTemp = rData.Offset(0, -1)

rData.AdvancedFilter _         Action:=xlFilterCopy, _         CopyToRange:=rTemp, _         Unique:=True

rTemp.EntireColumn.Copy _         rData.EntireColumn     Application.CutCopyMode = False     rTemp.EntireColumn.Delete     Set rData = Nothing     Set rTemp = Nothing End Sub

La macro crea una colonna temporanea, utilizza un filtro avanzato per copiare i valori univoci in quella colonna, quindi elimina la colonna di dati originale.

Il risultato sono solo valori univoci nella colonna A. Se non vuoi che la tua macro utilizzi la funzione di filtraggio dei dati di Excel, la seguente macro molto più breve farà il trucco:

Sub RemoveDups()

Dim rData As Range

Set rData = Range(Range("a1"), Range("A1048576").End(xlUp))

rData.RemoveDuplicates Columns:=Array(1), Header:=xlYes End Sub

La chiave in questa macro sta utilizzando il metodo RemoveDuplicates, che si basa su una matrice che contiene i numeri di colonna che si desidera controllare per i duplicati. La macro mostrata qui opera solo sul contenuto della colonna A, ma potresti facilmente modificarla per lavorare sui dati in più di una singola colonna. Tutto quello che devi fare è cambiare rData in modo che rappresenti l’area dati più grande e quindi modificare il parametro delle colonne in modo che punti alle colonne che vuoi controllare:

rData.RemoveDuplicates Columns:=Array(1,4), Header:=xlYes

Un altro approccio basato su macro è sviluppare il proprio codice per controllare i valori nel set di dati, in questo modo:

Sub DelDups()

Dim rngSrc As Range     Dim NumRows As Integer     Dim ThisRow As Integer     Dim ThatRow As Integer     Dim ThisCol As Integer     Dim J As Integer, K As Integer

Application.ScreenUpdating = False     Set rngSrc = ActiveSheet.Range(ActiveWindow.Selection.Address)



NumRows = rngSrc.Rows.Count     ThisRow = rngSrc.Row     ThatRow = ThisRow + NumRows - 1     ThisCol = rngSrc.Column

'Start wiping out duplicates     For J = ThisRow To (ThatRow - 1)

If Cells(J, ThisCol) > "" Then             For K = (J + 1) To ThatRow                 If Cells(J, ThisCol) = Cells(K, ThisCol) Then                     Cells(K, ThisCol) = ""

End If             Next K         End If     Next J

'Remove cells that are empty     For J = ThatRow To ThisRow Step -1         If Cells(J, ThisCol) = "" Then             Cells(J, ThisCol).Delete xlShiftUp         End If     Next J     Application.ScreenUpdating = True End Sub

La macro funziona su una selezione effettuata prima di chiamarla. Pertanto, se è necessario rimuovere celle duplicate dall’intervallo A2: A974, selezionare semplicemente quell’intervallo e quindi eseguire la macro. Quando la macro è completa, le celle duplicate vengono rimosse, così come le celle vuote.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (12711) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: