Eliminazione di valori di testo duplicati (Microsoft Excel)
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: