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.

Manualmente, è possibile 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. Scegli dati | Filtro | Filtro avanzato oppure, in Excel 2007, 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.

È 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. Utilizzare la finestra di dialogo 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.

Entrambi questi 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 avanzato, proprio come il precedente metodo manuale:

Sub CreateUniqueList()

Dim rData As Range     Dim rTemp As Range

Set rData = Range(Range("a1"), Range("A65536").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 farà il trucco:

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 (2430) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: